【溫故知新】之Android中橫豎屏切換處理的方式

來源:互聯網
上載者:User

Android手機運行時候,一般使用者都是豎屏的,但是經常不經意間會旋轉手機,這時候程式就會出現異常,以為在選在螢幕時候重新裝載了Acitivity,那麼如何解決這個問題呢,總結如下三條:

1:

   在AndroidManifest.xml中設定Activity的方向屬性。

   1.1. 固定為豎屏

<activity android:name="MyActivity" android:screenOrientation="portrait"/>

  1.2. 固定為橫屏

<activity android:name="MyActivity" android:screenOrientation="landscape"/>

2:

   在代碼中設定Activity的方向改變的處理。

  這種方式的前提是在AndroidManifest.xml中註冊configChanges屬性,然後在代碼中重寫onConfigurationChanged

,這樣在橫豎屏切換前會調用我們的代碼,可以以此為切入點做一些處理。

<activity 
android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="orientation"
>

orientation代表橫豎屏切換的變化,關於android:configChanges屬性的參數可以

參考: http://www.cnblogs.com/adamzuocy/archive/2009/10/15/1583670.html

 

@Override
public void onConfigurationChanged(Configuration newConfig) {
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//說明當前轉換成了橫屏,做相應處理
}
else if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
//說明當前轉換成了豎屏,做相應處理
}
super.onConfigurationChanged(newConfig);
}

這樣做在橫豎屏切換時候就不會重新裝載Activity了。我們可以發現在切屏時候onCreate()沒有重新調用。

3:

 與第二種方式有著異曲同工之妙的是第三種方法:

 重寫onSaveInstanceState(),onRestoreInstanceState()

    @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
}

橫豎屏切換時候的順序是這樣的

onSaveInstanceState()----->重新載入Activity----->onRestoreInstanceState()

這樣我們同樣可以捕獲切屏時間,加入我們的處理了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.