5分钟快速实现Android爆炸破碎酷炫动效
这个破碎动画,是一种类似小米系统删除应用时的爆炸破碎效果的动画。
效果图展示
先来看下是怎样的动效,要是感觉不是理想的学习目标,就跳过,避免浪费大家的时间。🙂
ezgif-2-a640aae0e5.gif
一行代码即可调用该动画
new ExplosionField(this).explode(view, null))
下面开始我们酷炫的Android动画特效正式讲解👇
先来个整体结构的把握
整体结构非常简单明了,新老从业者都可快速看懂,容易把握学习。
./
|-- explosion
| |-- MainActivity.java (测试爆炸破碎动效的主界面)
| |-- animation(爆炸破碎动效有关的类均在这里)
| | |-- ExplosionAnimator.java(爆炸动画)
| | |-- ExplosionField.java(爆炸破碎动画所依赖的View)
| | `-- ParticleModel.java(每个破碎后的粒子的model,颜色、位置、大小等)
| `-- utils
| `-- UIUtils.java(计算状态栏高度的工具类)
`-- architecture.md
庖丁解牛
下面开始每个类的详细分析
本着从简到繁、由表及里的原则,详细讲解每个类
MainActivity.java
MainActivity.java是测试动效的界面,该Activity内部有7个测试按钮。该类做的事情非常单纯,就是给每个View分别绑定click点击事件,让View在点击时能触发爆炸破碎动画。
/**
* 说明:测试的界面
* 作者:Jian
* 时间:2017/12/26.
*/
public class MainActivity extends AppCompatActivity {
/**
* 加载布局文件,添加点击事件
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViewsClick();
}
/**
* 添加点击事件的实现
*/
private void initViewsClick() {
// 为单个View添加点击事件
final View title = findViewById(R.id.title_tv);
title.setOnClickListener(v ->
new ExplosionField(MainActivity.this).explode(title, null));
// 为中间3个View添加点击事件
setSelfAndChildDisappearOnClick(findViewById(R.id.title_disappear_ll));
// 为下面3个View添加点击事件
setSelfAndChildDisappearAndAppearOnClick(findViewById(R.id.title_disappear_and_appear_ll));
// 跳转到github网页的点击事件
findViewById(R.id.github_tv).setOnClickListener((view) -> {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri content_url = Uri.parse(getString(R.string.github));
intent.setData(content_url);
startActivity(intent);
});
}
/**
* 为自己以及子View添加破碎动画,动画结束后,把View消失掉
* @param view 可能是ViewGroup的view
*/
private void setSelfAndChildDisappearOnClick(final View view) {