相信大部分的同学都有刷抖音的经历吧,那么当你疯狂给小姐姐点赞的时候,有没有想过这个蹦出来的那些疯狂跳动的心心的是怎么实现的呢?
文末有github预览
分析:
效果特点:
1.双击屏幕任意位置,就生成一个心动图
2.心动图不断放大
3.心动图逐渐消失
开始:
1.创建一个新的项目,添加一个class并取名为HotHeartFrameLayout,继承FrameLayout,如下:
ublic class HeartFrameLayout extends FrameLayout{
public HeartFrameLayout(@NonNull Context context) {
super(context);
}
public HeartFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
//这里绘制图形
}
}
2.创建一个HeartBean,用来存放需要绘制的心形图属性:
public class HeartBean {
int alpha; // 透明度
int X; // X坐标点
int Y; // Y坐标点
float scanle; // 缩放比例
int degrees; // 旋转角度
Paint paint; //
}
3.创建一个Handler,用来处理界面刷新,表现出动画的效果:
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
Refresh();
invalidate();
if (list != null && list.size() > 0) {
sendEmptyMessageDelayed(0, refreshRate);// 延时
}
break;
default:
break;
}
}
}
4.初始化相关值: