package zenproject.meditation.android.ui.sketch; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.util.AttributeSet; import android.widget.RelativeLayout; import com.juankysoriano.rainbow.utils.RainbowMath; import com.oguzdev.circularfloatingactionmenu.library.CircularMenu; import zenproject.meditation.android.R; import zenproject.meditation.android.ui.menu.buttons.FloatingActionButton; import zenproject.meditation.android.ui.menu.buttons.MenuButton; import zenproject.meditation.android.ui.menu.buttons.creators.CircularMenuCreator; import zenproject.meditation.android.ui.sketch.clear.ClearView; import zenproject.meditation.android.ui.sketch.clear.SketchClearListener; @SuppressWarnings({"PMD.FieldDeclarationsShouldBeAtStartOfClass", "PMD.TooManyMethods"}) public class ZenSketchView extends RelativeLayout { private ClearView clearView; private SketchClearListener sketchClearListener; private CircularMenu circularMenu; public ZenSketchView(Context context, AttributeSet attrs) { super(context, attrs); } public ZenSketchView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { clearView = (ClearView) findViewById(R.id.reveal_view); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); circularMenu = CircularMenuCreator.create(); } public CircularMenu getCircularMenu() { return circularMenu; } public void setSketchClearListener(SketchClearListener onClearListener) { this.sketchClearListener = onClearListener; } private boolean hasSketchClearListener() { return sketchClearListener != null; } private final Animator.AnimatorListener revealAnimatorListener = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { if (hasSketchClearListener()) { sketchClearListener.onSketchCleared(); } } }; public void clear() { if (!clearView.isClearing()) { clearView.startClearWith(revealAnimatorListener); FloatingActionButton menu = (FloatingActionButton) (circularMenu.findSubActionViewWithId(MenuButton.RESTART.getId())); clearView.setClearOrigin(menu.getCentre()); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); clearView.setClearRadius(RainbowMath.dist(0, 0, getWidth(), getHeight())); } }