看板 KnucklesNote
作者 標題 [AndroidStudio] 自訂換頁動畫 overridePendingTransition
時間 2016-01-11 Mon. 04:57:00
在文章列表點擊跳至文章閱讀頁,以及點了回上層跳回列表頁時
換頁動畫預設是使用淡入淡出
想要改成左移右移效果的話
Android預設就有提供從左邊滑進來的動畫
但從右邊滑進來的動畫要自己加上去
在 /res 新增一個 anim 的 Android resource directory
![[圖]](http://i.imgur.com/rX34dIu.png)
![[圖]](http://i.imgur.com/78n1uLm.png)
在 /res/anim 下新增兩個 Animation resource files
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100.0%p"
android:toXDelta="0.0" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100.0%p"
android:toXDelta="0.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="300"
android:fromXDelta="0.0"
android:toXDelta="-100.0%p" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0.0"
android:toXDelta="-100.0%p" />
</set>
修改文章列表頁的 Activity 類別
在成員函式 onItemClick() 裡,startActivity(intent);的下一行加上
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
讓新的頁面從右邊滑進來,舊的頁面從左邊滑出去修改文章閱讀頁的 Activity 類別
自訂左上角回上層鍵的點擊事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
return true;
}
return super.onOptionsItemSelected(item);
}
在 finish(); 後加上public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
return true;
}
return super.onOptionsItemSelected(item);
}
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
其中 android.R.anim.slide_in_left, android.R.anim.slide_out_right 是 Android 預設提供的
讓新頁面從左邊滑進來,舊的頁面從右邊滑出去
加上成員函式 onBackPressed()
@Override
public void onBackPressed(){
super.onBackPressed();
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}
在點擊手機的回上頁按鈕,會執行public void onBackPressed(){
super.onBackPressed();
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
執行結果
如果只是想關閉預設的淡入淡出動畫
只要在 startActivity(intent); 或 finish(); 後加上
overridePendingTransition(0,0);
即可
也可以在 startActivity(intent); 前加上
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
--
※ 作者: Knuckles 時間: 2016-01-11 04:57:00
※ 編輯: Knuckles 時間: 2017-01-15 01:39:22
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 1809
回列表(←)
分享