package com.wamod.setup; import android.animation.Animator; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.animation.AccelerateDecelerateInterpolator; import com.wamod.Resources; import com.wamod.Utils; import io.codetail.animation.ViewAnimationUtils; import org.json.JSONObject; /** * Created by brianvalente on 6/12/16. */ public class SetupActivity extends AppCompatActivity { final long ANIMATION_DURATION = 425; View wamod_setupwizard_overlay; View wamod_setupwizard_start_container; ViewGroup wamod_setupwizard_pages; boolean switchingPages = false; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(Resources.getLayout("wamod_setup_main_activity")); final FloatingActionButton wamod_setupwizard_start = (FloatingActionButton) findViewById(Resources.getID("wamod_setupwizard_start")); wamod_setupwizard_overlay = findViewById(Resources.getID("wamod_setupwizard_overlay")); wamod_setupwizard_start_container = findViewById(Resources.getID("wamod_setupwizard_start_container")); wamod_setupwizard_pages = (ViewGroup) findViewById(Resources.getID("wamod_setupwizard_pages")); wamod_setupwizard_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { wamod_setupwizard_overlay.setVisibility(View.VISIBLE); wamod_setupwizard_overlay.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // get the center for the clipping circle /*int cx = (wamod_setupwizard_overlay.getLeft() + wamod_setupwizard_overlay.getRight()) / 2; int cy = (wamod_setupwizard_overlay.getTop() + wamod_setupwizard_overlay.getBottom()) / 2;*/ float cx = wamod_setupwizard_start.getX() + wamod_setupwizard_start_container.getX() + (wamod_setupwizard_start.getWidth() / 2); float cy = wamod_setupwizard_start.getY() + wamod_setupwizard_start_container.getY() + (wamod_setupwizard_start.getHeight() / 2); // get the final radius for the clipping circle float dx = Math.max(cx, wamod_setupwizard_overlay.getWidth() - cx); float dy = Math.max(cy, wamod_setupwizard_overlay.getHeight() - cy); float finalRadius = (float) Math.hypot(dx, dy); // Android native animator Animator animator = ViewAnimationUtils.createCircularReveal(wamod_setupwizard_overlay, (int)cx, (int)cy, 0, finalRadius); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.setDuration(ANIMATION_DURATION); animator.start(); wamod_setupwizard_overlay.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); } }); wamod_setupwizard_pages.setPadding(0,0,0, Utils.getNavigationBarHeight()); wamod_setupwizard_overlay.setVisibility(View.GONE); } @Override public void onBackPressed() { //super.onBackPressed(); AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("Leave setup wizard"); dialog.setMessage("Are you sure you want to leave the setup wizard?"); dialog.setPositiveButton(getResources().getString(android.R.string.yes), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { finish(); } }); dialog.setNegativeButton(getResources().getString(android.R.string.no), null); dialog.show(); } public void changeTheme(final MotionEvent ev, final JSONObject theme) { PageLayout colorPalettePage = (PageLayout) findViewById(Resources.getID("wamod_setupwizard_pages_colorpalette")); colorPalettePage.changeTheme(ev, theme); } }