Android实现图片粉碎效果

Android使用ValueAnimator实现图片粉碎特效

效果图如下:
图片粉碎特效

效果看起来还是比较酷炫的,其实实现起来也很简单,主要分三步:
将图片中的每一个像素信息保存并绘制在屏幕上
设置属性动画,动画update中,更新每一个像素的位置信息,并重新绘制
设置View的点击事件,触发动画

保存像素信息

我们这里需要让破碎后的粒子做水平、垂直方向的初速度不同的自由落体运动,所以需要保存每一个粒子的颜色值、坐标及X、Y方向上的速度等。

Ball.java

public class Ball {
   
   
	public int color; // 图片像素点颜色值
    public float x; // 粒子圆心坐标x
    public float y;// 粒子圆心坐标y
    public float r;// 粒子半径

    public float vX;// 粒子水平速度
    public float vY;// 粒子垂直速度
    public float aX;// 粒子水平加速度
    public float aY;// 粒子垂直加速度
}

接下来需要将图片中的所有像素信息映射成一个Ball对象。

我们通过自定义View来实现效果:

public class SplitView extends View {
   
   
	
	//保存每一个像素对应的Ball对象
	private List<Ball> mBalls = new ArrayList<>();
	//用来绘制的画笔
	private Paint mPaint;
	//每一个粒子的直径
	//该参数控制原来每一个像素点在屏幕上的缩放比例,此时为放大两倍
	private int d = 2;
	
	public SplitView(Context context) {
   
   
        this(context, null);
    }

    public SplitView(Context context, AttributeSet attrs) {
   
   
        this(context, attrs, 0);
    }

    public SplitView(Context context
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值