Android和iPhone什么的手機在按鍵上有一個很大的區別就是Android的手機有返回按鈕。今天就來講一下這個返回按鈕。這個問題處理不好后面會遇到些許的麻煩。
捕獲返回按鈕事件
首先創建一個我們今天要用的APP項目,然后給項目中添加兩個Activity:一個是ActivityOne
,一個是ActivityTwo
。實現一個簡單的功能,就是從ActivityOne
跳轉到ActivityTwo
。然后在ActivityTwo
中點擊返回按鈕返回到第一個Activity。
要響應返回按鈕的操作就要捕獲返回按鈕事件。代碼如下:
@Override
public void onBackPressed() {
Log.i(TAG, "back button pressed");
super.onBackPressed();
}
現在你在ActivityTwo點擊了返回按鈕之后,你就會看看到這個方法執行了。當然,不會有什么不一樣的,還是返回到了前一個Activity。如果你把super.onBackPressed();
這句注掉,點擊返回按鈕就不會再返回前一個Activity了,只留在原來的Activity里。
捕獲了返回操作,能做點什么呢
一般情況下,返回按鈕都應該只處理一件事:退回到上一個Activity。但是還是可以干點別的事的。第一,修改默認的返回動畫。你可以在anim文件夾下添加動畫,然后在onBackPressed()
方法里使用這個動畫覆蓋默認的返回動畫。
@Override
public void onBackPressed() {
Log.i(TAG, "back button pressed");
super.onBackPressed();
overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out);
}
動畫xml文件:
zoom_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:shareInterpolator="@android:anim/accelerate_decelerate_interpolator">
<scale
android:fromXScale="80%"
android:fromYScale="80%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%" />
<alpha
android:fromAlpha="0.5"
android:toAlpha="1.0" />
</set>
zoom_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:shareInterpolator="@android:anim/accelerate_decelerate_interpolator">
<scale
android:fromXScale="100%"
android:fromYScale="100%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="150%"
android:toYScale="150%" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.5" />
</set>
這里我們用自定義的動畫代替了系統默認的Activity之間切換的動畫。關于動畫現在不用了解太多,之后會有詳細的講解。