package com.marshalchen.common.uimodule.materialdesign.views; import com.marshalchen.common.uimodule.materialdesign.utils.Utils; import android.R; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.util.AttributeSet; import android.view.MotionEvent; public class ButtonIcon extends ButtonFloat { public ButtonIcon(Context context, AttributeSet attrs) { super(context, attrs); setBackground(new ColorDrawable(getResources().getColor(R.color.transparent))); rippleSpeed = Utils.dpToPx(2, getResources()); rippleSize = Utils.dpToPx(5, getResources()); } @Override public boolean onTouchEvent(MotionEvent event) { boolean returnBool = super.onTouchEvent(event); if(x != -1){ x = getWidth() / 2; y = getHeight() / 2; } return returnBool; } @Override protected void onDraw(Canvas canvas) { if (x != -1) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(makePressColor()); canvas.drawCircle(x, y, radius, paint); if(radius > getHeight()/rippleSize) radius += rippleSpeed; if(radius >= getWidth() / 2 - rippleSpeed){ x = -1; y = -1; radius = getHeight()/rippleSize; if(onClickListener != null) onClickListener.onClick(this); } } invalidate(); } @Override protected int makePressColor() { return backgroundColor; } }