日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法

發(fā)布時間:2025/5/22 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

補間(Tween)動畫

Android 使用Animation代抽象的動畫類,它包括如下幾個子類。

  • AlphaAnimation:透明度改變的動畫。創(chuàng)建該動畫時要指定動畫開始時的透明度、結(jié)束時的透明度和動畫持續(xù)時間。其中透明度可從0變化到1。
  • ScaleAnimation:大小縮放的動畫。創(chuàng)建該動畫時要指定動畫開始時的縮放比(以X、Y軸的縮放參數(shù)來表示)、結(jié)束時的縮放比(以X、Y軸的縮放參數(shù)來表示),并指定動畫持續(xù)時間。由于縮放時以不同點為中心的縮放效果并不相同,因此指定縮放動畫時還要通過pivotX、pivotY來指定“縮放中心”的坐標(biāo)。
  • TranslateAnimation:位移變化的動畫。創(chuàng)建該動畫時只要指定動畫開始時的位置(以X、Y坐標(biāo)來表示)、結(jié)束時的位置(以X、Y坐標(biāo)來表示),并指定動畫持續(xù)時間即可。
  • RotateAnimation:旋轉(zhuǎn)動畫。創(chuàng)建該動畫時只要指定動畫開始時的旋轉(zhuǎn)角度、結(jié)束時的旋轉(zhuǎn)角度,并指定動畫持續(xù)時間即可。由于旋轉(zhuǎn)時以不同點為中心的旋轉(zhuǎn)效果并不相同,因此指定旋轉(zhuǎn)動畫時還要通過pivotX、pivotY來指定“旋轉(zhuǎn)軸心”的坐標(biāo)。
    • 一旦為補間動畫指定了三個必要信息,Android就會根據(jù)動畫的開始幀、結(jié)束幀、動畫持續(xù)時間計算出需要在中間“補入”多少幀,并計算所有補入幀的圖形。當(dāng)用戶瀏覽補間動畫時,他眼中看到的依然是“逐幀動畫”。
    • 為了控制在動畫期間需要動態(tài)“補入”多少幀,具體在動畫運行的哪些時刻補入幀,需要借助于Interpolator

    Interpolator

    • Interpolator 根據(jù)特定算法計算出整個動畫所需要動態(tài)插入幀的密度和位置。簡單地說,aterpolator負(fù)責(zé)控制動畫的變化速度,這就使得基本的動畫效果(AIpha、Scale、Translate Roete能以勻速變化、加速、減速、拋物線速度等各種速度變化。

    • Interpolator是一個接口,它定義了所有Interpolator都需要實現(xiàn)的方法:float getInterpolation(floatimput),開發(fā)者完全可以通過實現(xiàn)Interpolator來控制動畫的變化速度。

    Android為Interpolator提供了如下幾個實現(xiàn)類,分別用于實現(xiàn)不同的動畫變化速度。

  • LinearInterpolator:動畫以均勻的速度改變。
  • AccelerateInterpolator:在動畫開始的地方改變速度較慢,然后開始加速。
  • AccelerateDecelerateInterpolator:在動畫開始、結(jié)束的地方改變速度較慢,在中間的時候加速。
  • CycleInterpolator:動畫循環(huán)播放特定的次數(shù),變化速度按正弦曲線改變。
  • DecelerateInterpolator:在動畫開始的地方改變速度較快,然后開始減速。
  • 為了在動畫資源文件中指定補間動畫所使用的 Interpolator,定義補間動畫的<set…/>元素支持
    一個android:interpolator屬性,該屬性的屬性值可指定為Android默認(rèn)支持的Interpolator。例如:
    @android:anim/linear_interpolator
    @android:anim/accelerate_interpolator
    @android:anim/accelerate_decelerate_interpolator
    ……
    其實上面的寫法很有規(guī)律,它們就是把系統(tǒng)提供的Interpolator實現(xiàn)類的類名的駝峰寫法改為下畫線寫法即可。
    一旦在程序中通過AnimationUtils 得到了代表補間動畫的Animation 之后,接下來就可調(diào)用View的startAnimation(Animation anim)方法開始對該View執(zhí)行動畫了。

    位移(translate)、旋轉(zhuǎn)(rotate)、縮放(scale)、透明度(alpha)改變的補間動畫

    <?xml version="1.0" encoding="utf-8"?> <!-- 定義動畫勻速改變 --> <set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/linear_interpolator" ><translateandroid:duration="500"android:fromYDelta="100%"android:toYDelta="0%" /><rotateandroid:duration="5000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="720" /><scaleandroid:duration="1000"android:fillBefore="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%p"android:pivotY="50%p"android:toXScale="2.0"android:toYScale="2.0" /><rotateandroid:duration="1000"android:fromDegrees="0.5"android:toDegrees="1" /> </set>

    setCustomAnimations方法

    setCustomAnimations (int enter, int exit, int popEnter, int popExit),該方法有4個參數(shù):

  • 第一個參數(shù)enter是指當(dāng)一個Fragment被添加added 或者綁定attached到視圖上,該Fragment進(jìn)入視圖時的animation或者animator的資源ID;
  • 第二個參數(shù)exit是指當(dāng)一個Fragment從視圖上被移除removed或者解除綁定detached時,該Fragment移出視圖時的animation或者animator的資源ID;
  • 第三個參數(shù)popEnter是指當(dāng)調(diào)用popBackStack()方法或者類似的方法彈出棧頂?shù)腇ragment后,Fragment棧的棧頂Fragment重新被添加readded或重新綁定reattached到視圖上時,該Fragment進(jìn)入視圖時的animation或者animator的資源ID;
  • 第四個參數(shù)popExit是指當(dāng)調(diào)用popBackStack()方法或者類似的方法彈出棧頂?shù)腇ragment時,該彈出的Fragment即從視圖上被移除removed或者解除綁定detached,該Fragment移出視圖時的animation或者animator的資源ID。
  • getActivity().getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.comment_down_animation,R.anim.comment_down_animation).hide(feedCommentFragment).commitAllowingStateLoss(); getChildFragmentManager().beginTransaction().setCustomAnimations(R.anim.comment_fullscreen_anim_enter, R.anim.comment_fullscreen_anim_out).show(commentFragment).commitAllowingStateLoss();

    tips:setCustomAnimations方法必須成雙出現(xiàn),要么寫兩個要么寫四個。上面部分代碼表示在Activity、Fragment中加載新的Fragment的動畫。

    總結(jié)

    以上是生活随笔為你收集整理的Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。