android刷新时的圆形动画_【Android】圆形揭露动画
在Android系統(tǒng)中提供了一種圓形的揭露動(dòng)畫(huà),具體表現(xiàn)為一個(gè)view以圓形的形式展開(kāi)、揭示。所謂揭露動(dòng)畫(huà),就是一種用于 View 之間,甚至界面之間的特殊過(guò)渡動(dòng)畫(huà)效果。通過(guò)ViewAnimationUtils.createCircularReveal方法可以創(chuàng)建一個(gè)RevealAnimator動(dòng)畫(huà),代碼如下所示:
ViewAnimationUtils.createCircularReveal(
view,
x,//動(dòng)畫(huà)開(kāi)始中心點(diǎn)X
y,//動(dòng)畫(huà)開(kāi)始中心點(diǎn)Y
startR,//開(kāi)始半徑
endR);//結(jié)束半徑
如上,各參數(shù)的意思已做了注釋。
接下來(lái)通過(guò)一個(gè)demo來(lái)更好的理解它的用法和效果:
首先定義一個(gè)布局文件,顯示兩張圖片:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
android:id="@+id/img_1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/test" />
android:id="@+id/img_2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="30dp"
android:src="@drawable/test" />
然后為這兩張圖片添加點(diǎn)擊事件:
public void onViewClicked2(View view) {
switch (view.getId()) {
case R.id.img_1:
Animator animator = ViewAnimationUtils.createCircularReveal(
img1,
img1.getWidth() / 2,//動(dòng)畫(huà)開(kāi)始中心點(diǎn)X
img1.getHeight() / 2,//動(dòng)畫(huà)開(kāi)始中心點(diǎn)Y
0,//開(kāi)始半徑
img1.getWidth());//結(jié)束半徑
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()));//根號(hào)下x的平方+y的平方
animator2.setInterpolator(new AccelerateDecelerateInterpolator());
animator2.setDuration(1500);
animator2.start();
break;
}
}
運(yùn)行后點(diǎn)擊圖片我們可以看到如下效果:
初始效果:
點(diǎn)擊第一張圖:
點(diǎn)擊第二張圖:
我們可以根據(jù)自己需要的效果來(lái)設(shè)置動(dòng)畫(huà)開(kāi)始的中心點(diǎn),以及開(kāi)始和結(jié)束的半徑,來(lái)實(shí)現(xiàn)我們想要的效果。
不光如此,我們還可以為activity的根部局設(shè)置揭露動(dòng)畫(huà)來(lái)實(shí)現(xiàn)activity的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)。
在新activity的onCreate方法中設(shè)置:
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();
}
}
});
其中l(wèi)lcontent是根部局,動(dòng)畫(huà)開(kāi)始中心是布局的中心,動(dòng)畫(huà)開(kāi)始半徑是0,結(jié)束半徑是對(duì)角線長(zhǎng)度的一半,動(dòng)畫(huà)時(shí)間設(shè)置的是2秒,這樣在進(jìn)入activity的時(shí)候就可以看到整個(gè)布局是由中心向外以圓形的方式展開(kāi)的。值得注意的是,該動(dòng)畫(huà)效果是從Android5.X開(kāi)始添加的,在使用時(shí)我們要注意版本的控制。
樂(lè)潮信息www.leco-tec.com原創(chuàng),引用請(qǐng)表明出處
總結(jié)
以上是生活随笔為你收集整理的android刷新时的圆形动画_【Android】圆形揭露动画的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员专属壁纸
- 下一篇: Android 触摸手势基础 官方文档概