Android開發——遊戲約玩app原始碼中轉場動畫的實現
一、簡介
1.在遊戲約玩app原始碼中,兩個activity之間切換時介面的過渡效果。
2.兩個activity或者Fragment之間shared elements切換效果。
3.遊戲約玩app原始碼中轉場動畫的兩種常用方式:
- overridePendingTransition
- ActivityOptions
二、overPaddingTransition動畫
1.假如在遊戲約玩app原始碼中有A和B兩個頁面進行切換,A:從螢幕中間往左邊移,直至消失。B:從右邊出現,移動到螢幕中間,直至與螢幕重合。
2.新建一個anim包,在裡面建立幾個資原始檔。
- left_exit.xml:從左邊消失的動畫,移動距離為一個螢幕的寬度。所以為-100%p(相當於A頁面的動畫,從螢幕中消失)
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration = "500"
>
</translate>
- left_enter.xml:從右邊進入的動畫。(相當於B頁面的動畫,從右側進入螢幕)
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="100%p" android:toXDelta="0" android:duration = "500" > </translate>
3.在遊戲約玩app原始碼中任意搭建兩個介面,新增兩個按鈕,然後修改一下背景顏色即可。先實現第一個next按鈕的點選事件。
next.setOnClickListener {
startActivity(Intent(this,DetailActivity::class.java))
overridePendingTransition(R.anim.left_enter_anim,R.anim.left_exit_anim)
}
4.跳轉過去之後,如果又要跳回去,那麼在另外一個Activity裡面實現一下back按鈕的點選事件即可
back.setOnClickListener{ finish() }
- 如果只調用finish()函式的話,那麼它只會在遊戲約玩app原始碼中沒有任何動畫效果地跳轉回去,一點都不美觀。
5.如果想讓它也有一點動畫效果,那麼再新增兩個資原始檔即可。這一次是從右邊推過去。
- right_enter.xml:從最左邊進入螢幕中間。
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration = "500">
</translate>
- right_exit.xml:從螢幕中間移動到最右邊。
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:duration = "500">
</translate>
6.在back按鈕的監聽事件中新增這個動畫效果
overridePendingTransition(R.anim.right_enter_anim,R.anim.right_exit_anim)
7.左右都可以,那麼上下切換也可以。我們新增兩個從底部出現和消失的資原始檔
- bottom_enter.xml:從底部進入螢幕,這一回只用修改y座標。
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration = "500">
</translate>
- top_exit.xml:從螢幕中向上移動,直至消失。
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0"
android:toYDelta="-100%p"
android:duration = "500">
</translate>
8.在MainActivity裡面設定一下就可以使用,從另外一個頁面切換回來的動畫又要重新設定一下。
overridePendingTransition(R.anim.botton_enter_anim,R.anim.top_exit_anim)
9.在遊戲約玩app原始碼中除了推動,還可以設定透明度動畫。
- alpha_enter.xml:進入的動畫。
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0"
android:toAlpha="1"
android:duration = "500">
</alpha>
- alpha_exit.xml:消失的動畫。
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1"
android:toAlpha="0"
android:duration = "500">
</alpha>
overridePendingTransition(R.anim.alpha_enter_anim,R.anim.alpha_exit_anim)
同理,縮放,旋轉那些動畫都是可以自己做的。
三、共享元素切換
1.遊戲約玩app原始碼介面切換時 需要有共享元素切換效果。比如A和B頁面都有兩張圖片,那麼我們想讓A頁面的圖片和B頁面的圖片作為共享元素,讓它們的轉換更平滑一點。
1.在遊戲約玩app原始碼的介面A和B中 為共享控制元件設定相同的transitionName
android:transitionName="picture2"
2.建立ActivityOptions物件
val options = ActivityOptions.makeSceneTransitionAnimation(this,imageView,"picture2")
3.啟動介面
startActivity(Intent(this,DetailActivity::class.java),options.toBundle())
四、多個共享動畫
1.在遊戲約玩app原始碼中有共享元素時,切回去的方法就可以使用以下函式,這樣切回去也會有一定的動畫效果。
finishAfterTransition()
2.如果有多個共享元素,那麼給其他元素也設定相同的transitionName,使用Pair將它們聯絡在一起
val options=
ActivityOptions.makeSceneTransitionAnimation(
this,
Pair<View,String>(imageView,"picture1"),
Pair<View,String>(imageView2,"picture2")
)
3.還有很多其他的動畫,比如以下:
val options = ActivityOptions.makeScaleUpAnimation(
imageView,0,0,imageView.width,imageView.height
4.還有其他方法來處理共享動畫
window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS)
window.exitTransition = Slide(Gravity.END).setDuration(1000)
window.enterTransition= Slide(Gravity.END).setDuration(1000)
以上就是“Android開發——遊戲約玩app原始碼中轉場動畫的實現”的全部內容了,希望對大家有幫助。
本文轉載自網路,轉載僅為分享乾貨知識,如有侵權歡迎聯絡雲豹科技進行刪除處理
原文連結:https://www.jianshu.com/p/bafec95e8573