我的视频课程:《FFmpeg打造Android万能音频播放器》
由于项目需要实现类似于雪花飘落的效果,在Github中找到了开源项目(NineOldAndroids):https://github.com/JakeWharton/NineOldAndroids/,其中有一个效果就是类似于雪花飘落效果,在这里我只单独把那个效果提取出来了,大家可以下载整个项目自己研究,我们都是站在别人的肩膀上成长的。那咱们先看看效果:
这个效果都是用的android的动画叠加效果实现的,就不多说了,已经写好,有兴趣可以慢慢研究模仿。
这里只提取出啦两个文件,分别是:
1.Flake.java
2.FlakeView.java
由于Demo中是给的一个飘落图片,当然不能很好地展现飘落的多样性,所以我们可以在FlakeView中添加自己的图片(图片最好是正方形的,高度一定要大于等于宽度)。
一、因为每一个图片就是一张Bitmap,所以我们要定义几个Bitmap对象,我这里定义了5个:
Bitmap droid; // The bitmap that all flakes use
Bitmap droid2;
Bitmap droid3;
Bitmap droid4;
Bitmap droid5;
droid = BitmapFactory.decodeResource(getResources(), R.drawable.icon_1);
droid2 = BitmapFactory.decodeResource(getResources(), R.drawable.icon_2);
droid3 = BitmapFactory.decodeResource(getResources(), R.drawable.icon_3);
droid4 = BitmapFactory.decodeResource(getResources(), R.drawable.icon_4);
droid5 = BitmapFactory.decodeResource(getResources(), R.drawable.icon_5);
修改FlakeView中的addFlakes方法
public void addFlakes(int quantity) {
if(numFlakes <= 75)//这里定义花瓣的数量以及花色样式
{
for (int i = 0; i < quantity; ++i) {
if(i % 5 == 0)
flakes.add(Flake.createFlake(getWidth(), droid));
else if(i % 5 == 1)
flakes.add(Flake.createFlake(getWidth(), droid2));
else if(i % 5 == 2)
flakes.add(Flake.createFlake(getWidth(), droid3));
else if(i % 5 == 3)
flakes.add(Flake.createFlake(getWidth(), droid4));
else
flakes.add(Flake.createFlake(getWidth(), droid5));
}
setNumFlakes(numFlakes + quantity);
}
}
因为我的图片为5张,所以这里为了每个图片数量一致,就设定了总数75张(数量多少可以自己设定,可以定义为全局变量,这里就没有定义了),然后循环设置图片到集合里,就有了多种图片了。
要修改的地方基本就是这些了,要修改速度就到Flake中,找到speed中修改即可。
Demo下载地址