自定義Activity切換動畫
阿新 • • 發佈:2021-01-29
自定義Activity切換動畫
使用Animation來實現Activity的切換動畫
目錄
預覽
法一:指定某個Activity的切換動畫
-
設定開啟新Activity時展示的動畫
在呼叫
startActivity
之後呼叫overridePendingTransition
findViewById(R.id.btn).setOnClickListener(v -> { startActivity
-
設定關閉當前Activity時展示的動畫
在呼叫finish()的之
super.finish();
後呼叫overridePendingTransition
@Override public void finish() { super.finish(); // 下一個的進入,自己的退出
TIPS:自定義動畫會覆蓋全域性動畫
法二:定義全域性動畫
-
在
res/values/styles.xml
檔案中新建style:<style name="CustomActivityAnimation" parent="android:Animation.Activity"> <item name="android:activityOpenEnterAnimation"
-
在應用的 Theme(主題) 中應用上面新建的
CustomActivityAnimation
:<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!--其他省略...--> <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item> </style>
動畫檔案
在res/anim
資料夾下面新建動畫檔案:
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="-100%p"
android:toXDelta="0" />
</set>
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>