欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android橫豎屏切換實例總結(jié)

 更新時間:2016年01月11日 10:50:38   作者:java2009cgh  
這篇文章主要介紹了Android橫豎屏切換的相關(guān)技巧,結(jié)合實例形式總結(jié)分析了Android禁止及設(shè)置橫豎屏切換、修改切換布局及攔截切換等相關(guān)技巧,需要的朋友可以參考下

本文實例總結(jié)了Android橫豎屏切換相關(guān)技巧。分享給大家供大家參考,具體如下:

一、禁止橫豎屏切換

Android橫豎屏切換在手機(jī)開發(fā)中比較常見,很多軟件在開發(fā)過程中為了避免橫豎屏切換時引發(fā)不必要的麻煩,通常禁止掉橫豎屏的切換,即通過在AndroidManifest.xml中設(shè)置activity中的android:screenOrientation屬性值來實現(xiàn)。

該android:screenOrientation屬性,他有以下幾個參數(shù):

"unspecified":默認(rèn)值 由系統(tǒng)來判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會有不同的顯示方向.

"landscape":橫屏顯示(寬比高要長)

"portrait":豎屏顯示(高比寬要長)

"user":用戶當(dāng)前首選的方向

"behind":和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)

"sensor":有物理的感應(yīng)器來決定。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會橫豎屏切換。

"nosensor":忽略物理感應(yīng)器,這樣就不會隨著用戶旋轉(zhuǎn)設(shè)備而更改了("unspecified"設(shè)置除外)。

比如下列設(shè)置

復(fù)制代碼 代碼如下:
android:screenOrientation="portrait"

則無論手機(jī)如何變動,擁有這個屬性的activity都將是豎屏顯示。

復(fù)制代碼 代碼如下:
android:screenOrientation="landscape"
為橫屏顯示。

上述修改也可以在Java代碼中通過類似如下代碼來設(shè)置

復(fù)制代碼 代碼如下:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

二、橫豎屏切換更改布局

如果要讓軟件在橫豎屏之間切換,由于橫豎屏的高寬會發(fā)生轉(zhuǎn)換,有可能會要求不同的布局??梢酝ㄟ^以下兩種方法來切換布局:

1)在res目錄下建立layout-land和layout-port目錄,相應(yīng)的layout文件名不變,比如main.xml。layout-land是橫屏的layout,layout-port是豎屏的layout,其他的不用管,橫豎屏切換時程序為調(diào)用Activity的onCreate方法,從而加載響應(yīng)的布局。

2)假如布局資源不按照如上設(shè)置,則可以通過java代碼來判斷當(dāng)前是橫屏還是豎屏然后來加載相應(yīng)的xml布局文件。因為當(dāng)屏幕變?yōu)闄M屏的時候,系統(tǒng)會重新呼叫當(dāng)前Activity的onCreate方法,你可以把以下方法放在你的onCreate中來檢查當(dāng)前的方向,然后可以讓你的setContentView來載入不同的layout xml。

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
   Log.i("info", "landscape"); // 橫屏
}
else if (this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) {
  Log.i("info", "portrait"); // 豎屏
}

三、通過onConfigurationChanged攔截橫豎屏變換

按照二的操作,Activity每次橫豎屏切換都會重新調(diào)用onPause-> onStop-> onDestory-> onCreate->onStart->onResume,為此涉及到內(nèi)容和數(shù)據(jù)的保存和讀取,否則轉(zhuǎn)屏之前的內(nèi)容就會消失了。很多時候這樣的結(jié)果讓程序繁瑣,為此Android提供了在manifest中設(shè)置android:configChanges屬性,從而讓Activity不延續(xù)上述的重建流程。假如用戶關(guān)心橫豎屏的切換,可以在Activity或View的onConfigurationChanged(Configuration newConfig)函數(shù)中獲取當(dāng)前橫豎屏參數(shù)。至于其調(diào)用順序跟touch時間的傳遞順序相似,不過他沒有消費事件的概念,會順次調(diào)用到每一個onConfigurationChanged函數(shù)。

需要注意的是,onConfigurationChanged函數(shù)中只能獲得橫豎屏切換后的參數(shù),在該函數(shù)中獲取不到新的Layout和控件的尺寸位置信息,如果要處理尺寸和位置信息,必須通過消息異步或者延時調(diào)用,下面是我在項目需要橫豎屏切換時需要重新設(shè)置popupWindow位置的代碼:

@Override
protected void onConfigurationChanged(Configuration newConfig) {
   // TODO Auto-generated method stub
   super.onConfigurationChanged(newConfig);
   //View中不用創(chuàng)建Handler,可直接調(diào)用post操作
//      new Handler().postDelayed(new Runnable() {
//          @Override
//          public void run() {
//             updatePopup();
//          }
//      }, 500);
   postDelayed(new Runnable() {
       @Override
       public void run() {
          updatePopup();   //
       }
   }, 500);//嘗試過直接使用post操作,在updatePopup函數(shù)中也能獲取正確位置
}

至于橫豎屏翻轉(zhuǎn)時,系統(tǒng)如何讓窗口翻轉(zhuǎn)并重新繪制,我也沒有具體去細(xì)究源碼,所以也不得而知,有了解的可以告知下小弟。

當(dāng)然如果要徹底禁止翻轉(zhuǎn),可以設(shè)置android:screenOrientation的屬性為nosensor,如此就可以忽略重力感應(yīng)帶來的麻煩了。不過在模擬器上不管用,在真機(jī)上是正確的。

這里提一個小知識,Android模擬器中,快捷鍵"Ctrl+F11/F12"可以實現(xiàn)轉(zhuǎn)屏

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android實現(xiàn)Z軸布局效果

    Android實現(xiàn)Z軸布局效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)Z軸布局效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Android實現(xiàn)自定義輪播圖片控件詳解

    Android實現(xiàn)自定義輪播圖片控件詳解

    這篇文章給大家主要介紹了Android實現(xiàn)自定義輪播圖片控件的詳細(xì)過程,文中通過實例代碼介紹的很詳細(xì),相信會對大家的理解和學(xué)習(xí)很有幫助,感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • Android VelocityTracker使用案例詳解

    Android VelocityTracker使用案例詳解

    這篇文章主要介紹了Android VelocityTracker使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android實現(xiàn)excel/pdf/word/odt/圖片相互轉(zhuǎn)換

    Android實現(xiàn)excel/pdf/word/odt/圖片相互轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了Android如何實現(xiàn)excel/pdf/word/odt/圖片之間的相互轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • Android中使用背景色Alpha值遇到的一個坑

    Android中使用背景色Alpha值遇到的一個坑

    通過修改Alpha值可以對透明度進(jìn)行設(shè)置,這個大家應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Android中使用背景色Alpha值遇到的一個坑,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Android編程使用Fragment界面向下跳轉(zhuǎn)并一級級返回的實現(xiàn)方法

    Android編程使用Fragment界面向下跳轉(zhuǎn)并一級級返回的實現(xiàn)方法

    這篇文章主要介紹了Android編程使用Fragment界面向下跳轉(zhuǎn)并一級級返回的實現(xiàn)方法,較為詳細(xì)的分析了Fragment界面跳轉(zhuǎn)所涉及的相關(guān)知識點與實現(xiàn)技巧,并附帶了完整的實例代碼供讀者下載參考,需要的朋友可以參考下
    2015-10-10
  • 一文帶你了解Android中的網(wǎng)絡(luò)請求

    一文帶你了解Android中的網(wǎng)絡(luò)請求

    安卓開發(fā)網(wǎng)絡(luò)請求可謂是安卓開發(fā)的靈魂,如果你不會網(wǎng)絡(luò)請求,那么你開發(fā)的應(yīng)用軟件就是一具沒有靈魂的枯骨。本文主要為大家介紹的是Android的網(wǎng)絡(luò)請求,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • Android studio保存logcat日志到本地的操作

    Android studio保存logcat日志到本地的操作

    這篇文章主要介紹了Android studio保存logcat日志到本地的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 詳解Android中AsyncTask的使用方法

    詳解Android中AsyncTask的使用方法

    本篇文章主要介紹了Android中AsyncTask的使用方法,有興趣的同學(xué)可以了解一下。
    2016-11-11
  • 揭秘Android視圖繪制的流程步驟

    揭秘Android視圖繪制的流程步驟

    在Android的UI中,View是至關(guān)重要的一個組件,它是用戶界面的基本構(gòu)建塊,在View的繪制過程中,涉及到很多重要的概念和技術(shù),本文將詳細(xì)介紹Android?View的繪制過程,讓你能夠更好地理解和掌握Android的UI開發(fā),需要的朋友可以參考下
    2023-06-06

最新評論