Android橫豎屏切換

來源:互聯網
上載者:User

標籤:

     ps:雖然現在的app一般都是固定一個螢幕方向,但是還是有必要瞭解下螢幕切換的方法和注意。

 一 固定橫豎屏

     androidmainfest.xml中設定activoty屬性:android:screenOration="land-space/portaie" (橫向/豎向)

     

二 自動切換   

    1 androidmainfest.xml中設定activity屬性:android:configChanges="orientation|screensize|keyboardHidden" (3.0以後需要同時設定screensize)

    ;由於橫豎螢幕切換,activity會銷毀,建立一個activity     

     注意:

     重建之前需要儲存資料:onRetainNoNConfigurationInstance()
     onCreate中擷取之前儲存的資料getLastNoNConfigurationInstance()

     view相關,context上下文相關的無法儲存 ,因為頁面已經重新繪製了。

     

相關代碼:
重寫Activity.onRetainNonConfigurationInstance(),使用者橫豎屏切換前儲存資料

@Override

public Object onRetainNonConfigurationInstance() {

final MyDataObject data = collectMyLoadedData();

return data;

}

在onCreate()函數中調用getLastNonConfigurationInstance(),擷取onRetainNonConfigurationInstance()儲存的資料

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();

if (data == null) {

data = loadMyData();

}

...

}

 

 


    2  當然可以做到,橫豎屏切換的時候,頁面隨著改動,而不是銷毀

        後台代碼實現activity的onConfigrationChanges()        

@Override

public void onConfigurationChanged (Configuration newConfig){

super.onConfigurationChanged(newConfig);

setContentView(R.layout.main);

//注意,這裡刪除了init(),否則又初始化了,狀態就丟失

findViews();

setListensers();

}

 


    注意:

    需要layout下設定同名的layout-land.xml 和layout-port.xml布局,其中控制項的個數和名稱都必須一樣,橫豎屏會自動匹配

    

    

    

 

Android橫豎屏切換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.