android 动画 返回,Android“菜单图标变返回”动画
此例用到SVG動(dòng)畫,其中涉及三個(gè)XML文件,分別為:Vector矢量圖,objectAnimator動(dòng)畫,以及一個(gè)animated-vector文件將前兩個(gè)文件聯(lián)合起來。
1.在drawable文件夾下新建vector文件描述矢量圖
android:height="200dp"
android:width="200dp"
android:viewportHeight="100"
android:viewportWidth="100">
android:name="path1"
android:strokeColor="@color/colorAccent"
android:strokeWidth="5"
android:strokeLineCap="round"
android:pathData="
M 20,80
L 50,80,80,80"/>
android:name="path2"
android:strokeColor="@color/colorAccent"
android:strokeWidth="5"
android:strokeLineCap="round"
android:pathData="
M 20,50
L 50,50,80,50"/>
android:name="path3"
android:strokeColor="@color/colorAccent"
android:strokeWidth="5"
android:strokeLineCap="round"
android:pathData="
M 20,20
L 50,20,80,20"/>
因?yàn)橐淖兊谝粭l和第三條線的,只要兩個(gè)點(diǎn)就夠了,但是為了動(dòng)畫美觀過渡更自然,我們使用三個(gè)點(diǎn)來描繪。其中M代表moveto:即起點(diǎn)坐標(biāo),L代表lineto:即后續(xù)點(diǎn)點(diǎn)到哪里,在這個(gè)動(dòng)畫中我們描繪了三條線,第一條:最下面一條,(20,80)到(50,80)再到(80,80)剩下兩條以此類推。
2.寫objectAnimator文件
在這個(gè)文件中我們需要描繪每條線的動(dòng)畫路徑。下面是line1的動(dòng)畫,即最下面的動(dòng)畫,這個(gè)文件建立在animator文件夾中,并不是anim文件夾。
android:duration="300"
android:propertyName="pathData"
android:valueFrom="
M 20,80
L 50,80,80,80"
android:valueTo="
M 20,50
L 50,80,50,80"
android:valueType="pathType"
android:interpolator="@android:anim/linear_interpolator">
這個(gè)文件中有幾個(gè)屬性,我們解釋一下valueFrome以及valueTo這兩個(gè)關(guān)鍵屬性:
android:valueFrom="
M 20,80
L 50,80,80,80"
表示從原來的其實(shí)位置移動(dòng)到
android:valueTo="
M 20,50
L 50,80,50,80"
的位置,最下面的interpolator插值器則描繪了動(dòng)畫的緩沖路徑。
3.建立animated-vector文件
將上述兩個(gè)文件粘合在一起,從而完成動(dòng)畫繪制,這個(gè)文件同樣建立在drawable文件夾中。
android:drawable="@drawable/svg_vecotr_1">
android:animation="@animator/anim_path1"
android:name="path1"/>
android:animation="@animator/anim_path2"
android:name="path3"/>
其中target標(biāo)簽中的animation就是我們vectorAnimator動(dòng)畫,name就是vector文件中的線條。
4.引用
在布局文件中使用android:src="@drawable/svg_1"即可,這個(gè)引用的是第三個(gè)animated-vector文件。
5.在代碼中注冊(cè)
首先為引用該資源的view注冊(cè)點(diǎn)擊事件,自點(diǎn)擊事件中初始化動(dòng)畫:
private void animate() {
Drawable drawable = imageView.getDrawable();
if (drawable instanceof Animatable) {
((Animatable) drawable).start();
}
}
ezgif-2-a37b90817c.gif
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的android 动画 返回,Android“菜单图标变返回”动画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪给特斯拉打工 谁赚大了?
- 下一篇: M2处理器号称比Intel酷睿i5快26