免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

如何進行Android開發中橫屏豎屏切換的實現-創新互聯

今天就跟大家聊聊有關如何進行Android開發中橫屏豎屏切換的實現,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

成都創新互聯長期為上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為臺前企業提供專業的成都網站制作、做網站、外貿營銷網站建設,臺前網站改版等技術服務。擁有十余年豐富建站經驗和眾多成功案例,為您定制開發。

剛實現了App內手機橫/豎放置時,屏幕橫/豎屏的切換。記錄一下中間需要的關鍵信息和實現過程。

開門見山的說,實現屏幕自動/手動旋轉的方式有兩種:

一種是在工程的代碼中定義,這種方式在橫豎屏切換時執行的操作是:銷毀當前Activity–根據新的屏幕尺寸重建Activity。如果不進行數據存儲的操作,在切換的過程中Activity中的數據會丟失。

另一種是在工程的AndroidManifest.xml中定義,這種定義的方式在某些情況下可以實現“不銷毀需要橫豎屏的Activity”,因為這種方式不會銷毀Activity后重建Activity,因此Activity的數據不會丟失。

接下來分別介紹這兩種實現方式:

方式一:代碼中定義

在需要橫屏的Activity中的onCreate方法內添加如下語句,并且要求該語句位于onCreate方法內setContentView(**)語句之前。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

上條語句中,常數SCREEN_ORIENTATION_FULL_SENSOR是決定屏幕如何旋轉的參數。總結所有的參數對應的功能:

SCREEN_ORIENTATION_BEHIND      繼承Activity堆棧中當前Activity下面的那個Activity的方向              SCREEN_ORIENTATION_FULL_SENSOR      由重力傳感器決定0/90/180/270°              SCREEN_ORIENTATION_FULL_USER                    SCREEN_ORIENTATION_LANDSCAPE      始終橫屏              SCREEN_ORIENTATION_PORTRAIT      始終豎屏              SCREEN_ORIENTATION_LOCKED      鎖定屏幕方向              SCREEN_ORIENTATION_NOSENSOR      關閉重力傳感器對橫/豎屏的影響              SCREEN_ORIENTATION_REVERSE_LANDSCAPE      另一個方向的橫屏              SCREEN_ORIENTATION_REVERSE_PORTRAIT      另一個方向的豎屏(倒拿手機)              SCREEN_ORIENTATION_SENSOR      重力傳感器影響屏幕的方向0/90/270°              SCREEN_ORIENTATION_SENSOR_LANDSCAPE      始終橫屏,由重力傳感器決定是哪個方向的橫屏              SCREEN_ORIENTATION_SENSOR_PORTRAIT      始終豎屏,由重力傳感器決定是哪個方向的豎屏              SCREEN_ORIENTATION_UNSPECIFIED      不指定方向,使用默認方向              SCREEN_ORIENTATION_USER      由用戶和重力傳感器共同決定,詳見文本末端              SCREEN_ORIENTATION_USER_LANDSCAPE      用戶和重力傳感器共同決定是哪個方向的橫屏              SCREEN_ORIENTATION_USER_PORTRAIT      用戶和重力傳感器共同決定是哪個方向的豎屏              UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW      當屏幕較窄時導航欄有一部分會顯示在底部

由于該方式下橫/豎屏切換時,對應的Activity的數據會丟失,可以在對應的Activity中重寫如下兩個方法,來保證數據不丟失:

@Overrideprotected void onSaveInstanceState(Bundle outState) {  super.onSaveInstanceState(outState);  //橫豎屏切換前調用,保存用戶想要保存的數據,以下是樣例  outState.putString("name","yoosir");   outState.putInt("age",24);   outState.putBoolean("handsome",true);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {  super.onRestoreInstanceState(savedInstanceState);  // 屏幕切換完畢后調用用戶存儲的數據,以下為樣例:  if(savedInstanceState != null) {     int age = savedInstanceState.getInt("age");     String name = savedInstanceState.getString("name");     boolean isHandsome = savedInstanceState.getBoolean("handsome");  }}

參數功能

方式二:在AndroidManifest.xml中定義

在AndroidManifest.xml中對應的Activity屬性定義中配置android:configChanges和screenOrientation。參考的文章中在android:configChanges的配置說的很清楚,我直接把結論貼出來:

android:configChanges="orientation|keyboardHidden|screenSize"

配置configChanges為以上配置時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法。Activity中的數據不會被銷毀。  不配置configChanges或配置configChanges為非以上配置時,切屏會重新調用當前Activity的各個生命周期。Activity中的數據會被銷毀。

給出示例代碼如下:

<activity android:name=".com.cdsn.SearchActivity"  ... ...  android:screenOrientation="sensor"  android:configChanges="keyboardHidden|orientation|screenSize"      />

上述代碼中的android:screenOrientation所有可能的參數配置如下 。

unspecified      默認值。系統自動選擇屏幕方向              behind      跟activity堆棧中的下面一個activity的方向一致              landscape      橫屏方向,顯示的寬比高長              portrait      豎屏方向,顯示的高比寬長              sensor      由設備的物理方向傳感器決定,如果用戶旋轉設備,這屏幕就會橫豎屏切換              nosensor      忽略物理方向傳感器,這樣就不會隨著用戶旋轉設備而橫豎屏切換了(”unspecified”設置除外)              user      用戶當前選的方向              reverseLandscape      API 9 以上,反向橫屏              reversePortrait      API 9 以上,反向豎屏              sensorLandscape      API 9 以上,橫屏,但是可以根據 物理方向傳感器來切換正反向橫屏              sensorPortrait      API 9 以上,豎屏,但是可以根據 物理方向傳感器來切換正反向豎屏              fullSensor      API 9 以上,上下左右四個方向,由物理方向傳感器決定              locked      API 18 以上,鎖死當前屏幕的方向

上述代碼中的android:configChanges所有可能的參數配置如下:

mcc      IMSI移動臺的國家代碼(MCC)發生變化——一個SIM被探測到并且更新MCC              mnc      IMSI移動臺的網絡代碼(MNC)發生變化——一個SIM被探測到并且更新MNC              locale      區域發生變化——用戶選擇了一個文本需要顯示的新語言              keyboard      鍵盤類型發生變化——例如:用戶插入了外接鍵盤。              keyboardHidden      鍵盤的可訪問性發生變化——例如:用戶發現了硬件鍵盤。              screenLayout      屏幕布局發生變化——這個會導致顯示不同的Activity。              orientation      屏幕方向發生變化——用戶旋轉了屏幕。注意:如果應用程序的目標API級別是13或更高(通過屬性minSdkVersion和屬性targetSdkVersion聲明),你也需要聲明配置項screenSize,因為這將在設備選擇肖像和屏幕方向時發生改變。              screenSize      當前可用屏幕大小發生變化。這代表一個當前可用大小的變化,和當前的比率相關,因此當用戶選擇不同的畫面和圖像,會發生變化。然而,如果你的程序目標API級別是12或更低,你的Activity總是會自己處理這個配置變化(這個變化不會引起Activity的重啟,甚至在Android 3.2或更新的設備上)。在API級別13里加入的。              smallestScreenSize      物理屏幕大小的變化。不管方向的變化,僅僅在實際物理屏幕打包變化的時候,如:外接顯示器。這個配置項的變化引起在smallestWidth configuration里的變化。然而,如果你的程序目標API級別是12或更低,你的Activity將自己處理這個變化(這個變化不會引起Activity的重啟,甚至在Android 3.2或更新的設備上)在API級別13里加入的。              layoutDirection      布局方向變化。例如書寫方式從左向右(LTR)轉換為從右向左(RTL)

配置了以上屬性之后,進行橫豎屏切換的Activity的數據不會丟失,如果想根據不同的屏幕方向來展示不同UI或做不同的事,需要在該Activity中重寫以下方法:

@Overridepublic void onConfigurationChanged(Configuration newConfig) {  super.onConfigurationChanged(newConfig);  // 在這里添加屏幕切換后的操作}

描述
描述

番外

我按照上述方法,根據重力傳感器實現了屏幕旋轉,雖然可以做到屏幕隨重力傳感器切換,但是發現:無論手機設置中“屏幕旋轉”或“方向鎖定”是開是關,App內的Activity都會隨著手機的橫豎方向切換橫豎屏。我想要實現的是當打開“屏幕旋轉”時,App內的Activity跟隨重力感應器;當關閉“屏幕旋轉”時,App內的Activity固定為默認方向。如何做到關閉重力傳感器時,App亦關閉屏幕自動旋轉?

android:screenOrientation="sensor"

改上述代碼為以下代碼

android:screenOrientation="user"

意即:當參數為sensor時,無論是否關閉“屏幕旋轉”設置,App內的特定Activity都會根據重力傳感器改變橫豎屏。 當參數為user時,當“屏幕旋轉”開啟,則特定Activity根據根據重力傳感器改變橫豎屏;當“屏幕旋轉”關閉,則特定Activity會固定位默認方向(一般為正面豎屏)。

看完上述內容,你們對如何進行Android開發中橫屏豎屏切換的實現有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。

標題名稱:如何進行Android開發中橫屏豎屏切換的實現-創新互聯
文章網址:http://m.newbst.com/article4/dcdcoe.html

成都網站建設公司_創新互聯,為您提供微信公眾號、網站內鏈定制網站、外貿建站、做網站、網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司