【Android】圆形揭露动画
2020/02/09 来源:乐潮信息
在Android系统中提供了一种圆形的揭露动画,具体表现为一个view以圆形的形式展开、揭示。所谓揭露动画,就是一种用于 View 之间,甚至界面之间的特殊过渡动画效果。通过ViewAnimationUtils.createCircularReveal 方法可以创建一个RevealAnimator动画,代码如下所示:
ViewAnimationUtils.createCircularReveal(
view,
x,//动画开始中心点X
y,//动画开始中心点Y
startR,//开始半径
endR);//结束半径
如上,各参数的意思已做了注释。
接下来通过一个demo来更好的理解它的用法和效果:
首先定义一个布局文件,显示两张图片:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/img_1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/test" />
<ImageView
android:id="@+id/img_2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="30dp"
android:src="@drawable/test" />
</LinearLayout>
然后为这两张图片添加点击事件:
public void onViewClicked2(View view) {
switch (view.getId()) {
case R.id.img_1:
Animator animator = ViewAnimationUtils.createCircularReveal(
img1,
img1.getWidth() / 2,//动画开始中心点X
img1.getHeight() / 2,//动画开始中心点Y
0,//开始半径
img1.getWidth());//结束半径
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(1500);
animator.start();
break;
case R.id.img_2:
Animator animator2 = ViewAnimationUtils.createCircularReveal(
img2,
0,
0,
0,
(float) Math.hypot(img2.getWidth(), img2.getHeight()));//根号下x的平方+y的平方
animator2.setInterpolator(new AccelerateDecelerateInterpolator());
animator2.setDuration(1500);
animator2.start();
break;
}
}
运行后点击图片我们可以看到如下效果:
初始效果:
点击第一张图:
点击第二张图:
我们可以根据自己需要的效果来设置动画开始的中心点,以及开始和结束的半径,来实现我们想要的效果。
不光如此,我们还可以为activity的根部局设置揭露动画来实现activity的转场动画。
在新activity的onCreate方法中设置:
llContent.post(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Animator animator = createCircularReveal(llContent,llContent.getWidth()/2,llContent.getHeight()/2,
0, (float) Math.hypot(llContent.getWidth(),llContent.getHeight()),2000);
animator.start();
}
}
});
其中llcontent是根部局,动画开始中心是布局的中心,动画开始半径是0,结束半径是对角线长度的一半,动画时间设置的是2秒,这样在进入activity的时候就可以看到整个布局是由中心向外以圆形的方式展开的。值得注意的是,该动画效果是从Android5.X开始添加的,在使用时我们要注意版本的控制。
乐潮信息www.leco-tec.com原创,引用请表明出处