玩轉Android之如何處理返回按鈕
阿新 • • 發佈:2019-01-03
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之間切換的動畫。關於動畫現在不用瞭解太多,之後會有詳細的講解。