最近因为项目需求,需要写一个自定义的扩散加震动效果,废了一下午的时间,终于给他搞出来了,结果第二天需求就改掉了..
不说那么多题外话了,直接撸代码~
首先是XML文件:
<com.example.XXXXX.sxt.view.customview.DiffuseView
android:id="@+id/customCall"
android:layout_width="@dimen/x120"
android:layout_height="@dimen/x120"
app:diffuse_coreRadius="100"
app:diffuse_maxWidth="80"
app:diffuse_width="10"
android:layout_centerInParent="true"/>
属性&方法
属性名 | java方法 | 作用 |
---|---|---|
diffuse_color | setColor(int colorId) | 设置扩散圆颜色 |
diffuse_coreColor | setCoreColor(int colorId) | 设置中心圆颜色 |
diffuse_coreImage | setCoreImage(int imageId) | 设置中心圆图片 |
diffuse_coreRadius | setCoreRadius(int radius) | 设置中心圆半径 |
diffuse_maxWidth | setMaxWidth(int maxWidth) | 设置最大扩散宽度 |
diffuse_width | setDiffuseWidth(int width) | 设置扩散圆宽度,值越小越宽 |
Java代码(直接拷贝成一个类就OK~):
/**
* Created by HXY on 2018/9/25.
* Be used for : 首页电话按钮背景view,自定义扩散背景
*/
public class DiffuseView extends View {
/** 扩散圆圈颜色 */
private int mColor = getResources().getColor(R.color.colorPink);
/** 圆圈中心颜色 */
private int mCoreColor = getResources().getColor(R.color.colorPink);
/** 圆圈中心图片 */
private Bitmap mBitmap;
/** 中心圆半径 */
private float mCoreRadius = 150;
/** 扩散圆宽度 */
private int mDiffuseWidth = 3;
/** 最大宽度 */
private Integer mMaxWidth = 255;
/** 是否正在扩散中 */
private boolean mIsDiffuse = false;
// 透