• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 安卓轉場動畫

    標簽: 動畫  android

    一、系統自帶動畫效果

    假如有 A 和 B 兩個 Activity, 從 A 進入 B,調用
    startActivity(Intent(this,AnimCutOutActivity::class.java))
    overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)

    • 第一個動畫android.R.anim.fade_in 表示 B 進入時的動畫,第二個動畫android.R.anim.fade_out 表示 A 退出時的動畫。

    從 B 退出進入 A, 調用
    finish()
    overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)

    • 第一個動畫android.R.anim.fade_in 表示重新顯示 A 的動畫
    • 第二個動畫android.R.anim.fade_out 表示 B 退出的動畫

    1.1 設置無動畫效果

    iShot2020-09-0923.18.28.gif
    實現:

    //進入的動畫
    startActivity(Intent(this,AnimCutOutActivity::class.java))
    overridePendingTransition(0,0)
                
    //退出時
    finish()
    overridePendingTransition(0,0)
    

    1.2 淡入淡出

    iShot2020-09-0923.22.45.gif
    實現:

     startActivity(Intent(this,AnimCutOutActivity::class.java))
     overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)
                
     finish()
     overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)
    

    1.3 左右交錯

    iShot2020-09-0923.24.58.gif
    實現:

    startActivity(Intent(this,AnimCutOutActivity::class.java))
    overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
                
    finish()
    overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right)
    

    二、自定義簡單轉場動畫

    2.1 淡入淡出

    效果和上面系統自帶的淡入淡出一樣。
    實現:

    startActivity(Intent(this,AnimCutOutActivity::class.java))
    overridePendingTransition(R.anim.activity_fade_in,R.anim.activity_fade_out)
                
                
    finish()
    overridePendingTransition(R.anim.activity_fade_in,R.anim.activity_fade_out)
    

    activity_fade_in:

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromAlpha="0"
        android:toAlpha="1"
        android:duration="@android:integer/config_longAnimTime">
    
    </alpha>
    

    activity_fade_out:

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@android:integer/config_longAnimTime"
        android:fromAlpha="1"
        android:toAlpha="0">
    
    </alpha>
    

    2.2 左進右出

    iShot2020-09-1122.27.24.gif
    實現:

     startActivity(Intent(this,AnimCutOutActivity::class.java))
     overridePendingTransition(R.anim.activity_slide_left_in,R.anim.activity_slide_right_out)
                
     finish()
     overridePendingTransition(R.anim.activity_slide_left_in,R.anim.activity_slide_right_out)
    

    activity_slide_left_in:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="-100%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
    </set>
    

    activity_slide_right_out:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="0" android:toXDelta="100%p"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
            android:duration="@android:integer/config_mediumAnimTime" />
    </set>
    

    2.3 右進左出

    iShot2020-09-1122.31.20.gif
    實現:

     startActivity(Intent(this,AnimCutOutActivity::class.java))
     overridePendingTransition(R.anim.activity_slide_right_in,R.anim.activity_slide_left_out)
                
     finish()
     overridePendingTransition(R.anim.activity_slide_right_in,R.anim.activity_slide_left_out)
    

    activity_slide_right_in:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="100%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
    </set>
    

    activty_slide_left_out:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="0" android:toXDelta="-100%p"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
            android:duration="@android:integer/config_mediumAnimTime" />
    </set>
    

    2.4 其他效果

    基本都類似,有了這些動畫以后就可以自由組合,實現自己想要的結果。下面實現一個常見的動畫效果,進入時右進左出,退出時左進右出,效果如下:
    iShot2020-09-1122.37.24.gif
    實現:

      startActivity(Intent(this,AnimCutOutActivity::class.java))
      overridePendingTransition(R.anim.activity_slide_right_in,R.anim.activity_slide_left_out)
                
      finish()
      overridePendingTransition(R.anim.activity_slide_left_in,R.anim.activity_slide_right_out)
    

    三、通過windowAnimationStyle來實現

    在styles 里的 Activity 主題上加上:

        <style name="SlideRightLeft" parent="@android:style/Animation.Activity">
            <item name="android:activityOpenEnterAnimation">@anim/activity_slide_right_in</item>
            <item name="android:activityOpenExitAnimation">@anim/activity_slide_left_out</item>
            <item name="android:activityCloseEnterAnimation">@anim/activity_slide_left_in</item>
            <item name="android:activityCloseExitAnimation">@anim/activity_slide_right_out</item>
        </style>
    

    調用:

        <style name="AppThemeAnim" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/blue_74D3FF</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="android:windowAnimationStyle">@style/SlideRightLeft</item>
        </style>
    
    • 在A啟動B時:
      activityOpenEnterAnimation:B進入的動畫
      android:activityOpenExitAnimation:A退出的動畫
    • 在B后退回A時:
      activityCloseEnterAnimation:A重新進入的動畫
      activityCloseExitAnimation:B退出的動畫

    和代碼實現效果一樣,都是四個動畫。

    四、更復雜的動畫效果

    iShot2020-09-1122.49.59.gif
    這種動畫效果有個庫實現的效果很好,CircularAnim可以看這個庫如何使用,也可以去看源碼如何實現的。一般來說使用系統默認的動畫效果就好,這樣比較符合平時的使用習慣。特殊情況時才考慮去自定義轉場動畫。

    版權聲明:本文為EleganceKing原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/EleganceKing/article/details/108543168

    智能推薦

    Android 安卓動畫 補間動畫 - 縮放動畫

    補間動畫之縮放動畫 實現效果:點擊按鈕后實現按鈕放大效果 補間動畫概念:就是從一個畫面過渡到另一個畫面時讓人看到中間動畫效果! 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684   補間動畫 補間動畫-平移動畫:  https://blog...

    Android 安卓動畫 補間動畫 - 平移動畫

    補間動畫之平移動畫 實現效果:向右下方向移動控件 補間動畫概念:就是從一個畫面過渡到另一個畫面時讓人看到中間動畫效果! 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684   補間動畫 補間動畫-平移動畫:  https://blog.csd...

    Android 安卓動畫 屬性動畫 - 旋轉動畫

    引入 屬性動畫的出現,彌補了補間動畫的不足之處,補間動畫,只是改變了表面上的東西,但是其中屬性并未改變,而屬性動畫相反,改變了表面上的東西,并且也更改了其屬性。 類:ObjectAnimator 用于操作屬性動畫的類 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684 &...

    Android 安卓動畫 屬性動畫 - 移動動畫

    引入 屬性動畫的出現,彌補了補間動畫的不足之處,補間動畫,只是改變了表面上的東西,但是其中屬性并未改變,而屬性動畫相反,改變了表面上的東西,并且也更改了其屬性。 類:ObjectAnimator 用于操作屬性動畫的類 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684 &...

    Android 安卓動畫 屬性動畫 - 縮放動畫

    引入 屬性動畫的出現,彌補了補間動畫的不足之處,補間動畫,只是改變了表面上的東西,但是其中屬性并未改變,而屬性動畫相反,改變了表面上的東西,并且也更改了其屬性。 類:ObjectAnimator 用于操作屬性動畫的類 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684 &...

    猜你喜歡

    Android 安卓動畫 屬性動畫 - 組合動畫

    引入 屬性動畫的出現,彌補了補間動畫的不足之處,補間動畫,只是改變了表面上的東西,但是其中屬性并未改變,而屬性動畫相反,改變了表面上的東西,并且也更改了其屬性。 類:ObjectAnimator 用于操作屬性動畫的類 動畫 - 相關文章篇 幀動畫 幀動畫:  https://blog.csdn.net/qq_40881680/article/details/82222684 &...

    [iOS]轉場動畫

    iOS 轉場動畫 iOS 轉場動畫詳解 iOS開發中常用的動畫(轉場動畫) 轉場動畫:https://github.com/YanLYM/YMTransitionDemo Demo:https://github.com/Gamin-fzym/AnimatedTransitionsDemo 學習了轉場動畫, 自己寫個demo備份一下. 動畫這塊的算法太麻煩,就直接copy了大佬們寫的代碼, 目前De...

    3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習

    3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習 3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習 自學資源 作業內容 1、基本操作演練【建議做】 天空盒的制作: 地圖的制作: 整體效果: 2、編程實踐 項目要求: 項目結構: 代碼詳解: Actions: ISSActionCallback.cs SSAction.cs SSAction...

    FlycoTabLayout 的使用

    FlycoTabLayout 一個Android TabLayout庫,目前有3個TabLayout SlidingTabLayout:參照PagerSlidingTabStrip進行大量修改. 新增部分屬性 新增支持多種Indicator顯示器 新增支持未讀消息顯示 新增方法for懶癌患者 CommonTabLayout:不同于SlidingTabLayout對ViewPager依賴,它是一個不...

    爬蟲項目實戰八:爬取天氣情況

    爬取天氣情況 目標 項目準備 接口分析 代碼實現 效果顯示 寫入本地 目標 根據天氣接口,爬取接下來一周的天氣情況。 項目準備 軟件:Pycharm 第三方庫:requests,BeautifulSoup,csv 接口地址:http://api.k780.com:88/?app=weather.future&weaid=城市名&appkey=10003&sign=b59bc...

    精品国产乱码久久久久久蜜桃不卡