Android动画 详解(一 补间动画)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
打算整理下 android動(dòng)畫(huà)方面的知識(shí),嗯 ?開(kāi)始
一.android補(bǔ)間動(dòng)畫(huà) 分為四大類?
alpha(透明度漸變)、scale(尺寸漸變)、translate(位置移動(dòng))、rotate(旋轉(zhuǎn))
通過(guò)JAVA類來(lái)表示?AlphaAnimation ? ?ScaleAnimation ??TranslateAnimation?RotateAnimation
二.可以通過(guò) XML文件 或者JAVA代碼的方式來(lái)實(shí)現(xiàn)動(dòng)畫(huà)
1.動(dòng)過(guò)XML來(lái)實(shí)現(xiàn)動(dòng)畫(huà)
在res目錄中新建anim文件夾
在anim目錄中新建一個(gè)anim.xml
XML動(dòng)畫(huà)詳細(xì)解析
alpha
說(shuō)明: 0.0表示完全透明 1.0表示完全不透明 ??時(shí)間以毫秒為單位
Scale
說(shuō)明: 插入器 下一篇詳細(xì)說(shuō)
pivotX ?pivotY 確定了 放大縮小的中心 ?上面4個(gè)屬性 定義了開(kāi)始 和結(jié)束的比例 <1縮小 >1放大
<set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator= "@android:anim/accelerate_decelerate_interpolator" <!--interpolator 指定一個(gè)動(dòng)畫(huà)的插入器 -->android:fromXScale="0.0" <!--起始時(shí) X坐標(biāo)上的伸縮尺寸 -->android:toXScale="1.4" <!--結(jié)束時(shí) X坐標(biāo)上的伸縮尺寸 -->android:fromYScale="0.0" <!--起始時(shí)Y坐標(biāo)上的伸縮尺寸 -->android:toYScale="1.4" <!--結(jié)束時(shí)Y坐標(biāo)上的伸縮尺寸 -->android:pivotX="50%" <!--屬性為動(dòng)畫(huà)相對(duì)于物件的X坐標(biāo)的開(kāi)始位置 -->android:pivotY="50%" <!--屬性為動(dòng)畫(huà)相對(duì)于物件的Y坐標(biāo)的開(kāi)始位置 -->android:fillAfter="false" <!--當(dāng)設(shè)置為true ,該動(dòng)畫(huà)轉(zhuǎn)化在動(dòng)畫(huà)結(jié)束后被應(yīng)用 -->android:duration="700" <!--時(shí)間 -->/> </set>
Translate
說(shuō)明:沒(méi)啥說(shuō)的了
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="30" <!--始時(shí) X坐標(biāo)上的位置 -->android:toXDelta="-80" <!--結(jié)束時(shí) X坐標(biāo)上的位置 -->android:fromYDelta="30" <!--起始時(shí) Y坐標(biāo)上的位置 -->android:toYDelta="300" <!--結(jié)束時(shí) Y坐標(biāo)上的位置 -->android:duration="2000" <!--時(shí)間-->/> </set>Rotate
說(shuō)明:其實(shí)也沒(méi)啥好說(shuō)的了
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator" <!--動(dòng)畫(huà)的插入器 -->android:fromDegrees="0" <!--動(dòng)畫(huà)起始時(shí)物件的角度 -->android:toDegrees="+350" <!--畫(huà)結(jié)束時(shí)物件旋轉(zhuǎn)的角度 可以大于360度 -->android:pivotX="50%" <!--X坐標(biāo)的開(kāi)始位置 -->android:pivotY="50%" <!--Y坐標(biāo)的開(kāi)始位置 -->android:duration="3000" /> </set>
在JAVA 代碼中調(diào)用XML?
Animation myAnimation= AnimationUtils.loadAnimation(this, R.anim.my_action);? //使用AnimationUtils類的靜態(tài)方法loadAnimation()來(lái)加載XML中的動(dòng)畫(huà)XML文件
2 試用JAVA 代碼 來(lái)創(chuàng)建動(dòng)畫(huà)
說(shuō)明 具體參數(shù)含義 可對(duì)照上面的XML
//在代碼中定義 動(dòng)畫(huà)實(shí)例對(duì)象 private Animation myAnimation_Alpha; private Animation myAnimation_Scale; private Animation myAnimation_Translate; private Animation myAnimation_Rotate;//根據(jù)各自的構(gòu)造方法來(lái)初始化一個(gè)實(shí)例對(duì)象 myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);myAnimation_Translate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);設(shè)置動(dòng)畫(huà)監(jiān)聽(tīng),注意 當(dāng)控件移動(dòng)后 ?其點(diǎn)擊事件 還在原來(lái)的未知 需要調(diào)用view.layout(x,x,x,x);方法修改下 控件的未知
animation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {}});最后 就查給控件添加上 創(chuàng)建好的動(dòng)畫(huà) 并啟動(dòng)了
view.startAnimation(animation); 謝謝
轉(zhuǎn)載于:https://my.oschina.net/zhushihui/blog/659491
總結(jié)
以上是生活随笔為你收集整理的Android动画 详解(一 补间动画)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: kFreeBSD有活过来的迹象?Ubun
- 下一篇: Android Touch事件传递机制