关键词:
package com.nhaarman.test;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RadialGradient;
import android.graphics.Region;
import android.graphics.Shader;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.animation.AccelerateInterpolator;
import android.widget.Button;
import android.widget.Toast;
public class MyButton extends Button
private float mDownX;
private float mDownY;
private float mRadius;
private Paint mPaint;
public MyButton(final Context context)
super(context);
init();
public MyButton(final Context context, final AttributeSet attrs)
super(context, attrs);
init();
public MyButton(final Context context, final AttributeSet attrs, final int defStyle)
super(context, attrs, defStyle);
init();
private void init()
mPaint = new Paint();
mPaint.setAlpha(100);
@Override
public boolean onTouchEvent(@NonNull final MotionEvent event)
if (event.getActionMasked() == MotionEvent.ACTION_UP)
mDownX = event.getX();
mDownY = event.getY();
ObjectAnimator animator = ObjectAnimator.ofFloat(this, "radius", 0, getWidth() * 3.0f);
animator.setInterpolator(new AccelerateInterpolator());
animator.setDuration(400);
animator.start();
return super.onTouchEvent(event);
public void setRadius(final float radius)
mRadius = radius;
if (mRadius > 0)
RadialGradient radialGradient = new RadialGradient(
mDownX,
mDownY,
mRadius * 3,
Color.TRANSPARENT,
Color.BLACK,
Shader.TileMode.MIRROR
);
mPaint.setShader(radialGradient);
invalidate();
private Path mPath = new Path();
private Path mPath2 = new Path();
@Override
protected void onDraw(@NonNull final Canvas canvas)
super.onDraw(canvas);
mPath2.reset();
mPath2.addCircle(mDownX, mDownY, mRadius, Path.Direction.CW);
canvas.clipPath(mPath2);
mPath.reset();
mPath.addCircle(mDownX, mDownY, mRadius / 3, Path.Direction.CW);
canvas.clipPath(mPath, Region.Op.DIFFERENCE);
canvas.drawCircle(mDownX, mDownY, mRadius, mPaint);
csharp代码片段(代码片段)
查看详情
javascript代码片段(代码片段)
查看详情
textvisualbasic代码片段(代码片段)
查看详情
sqloracle代码片段(代码片段)
查看详情
swift代码片段(代码片段)
查看详情
java代码片段【安卓】(代码片段)
查看详情
shbash的代码片段(代码片段)
查看详情
markdownphpexcelnotes和代码片段(代码片段)
查看详情
javaandroid的代码片段(代码片段)
查看详情
javascriptjs-常用代码片段(代码片段)
查看详情
常用代码片段(代码片段)
单例模式privatestaticHttpUtilinstance;publicstaticsynchronizedHttpUtilgetInstance()if(instance==null)instance=newHttpUtil();returninstance; 查看详情
常用代码片段(代码片段)
单例模式privatestaticHttpUtilinstance;publicstaticsynchronizedHttpUtilgetInstance()if(instance==null)instance=newHttpUtil();returninstance; 查看详情
text代码片段很有用(代码片段)
查看详情
vbscript我的代码片段(代码片段)
查看详情
java代码片段【java】(代码片段)
查看详情
rr有用的代码片段(代码片段)
查看详情
常见的代码片段(代码片段)
$(id).select2(placeholder:"--请选择--",allowClear:true,data:list); 查看详情
text代码片段【snl】(代码片段)
查看详情