日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

【转】 Android 屏幕切换总结

發(fā)布時(shí)間:2024/8/23 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】 Android 屏幕切换总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自?http://www.open-open.com/lib/view/open1328069449468.html

Android橫豎屏要解決的問(wèn)題應(yīng)該就兩個(gè):

一.布局問(wèn)題

二.重新載入問(wèn)題

1.布局問(wèn)題:如果不想讓軟件在橫豎屏之間切換,最簡(jiǎn)單的辦法就是在項(xiàng)目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,他有以下幾個(gè)參數(shù):

"unspecified":默認(rèn)值 由系統(tǒng)來(lái)判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會(huì)有不同的顯示方向.?
"landscape":橫屏顯示(寬比高要長(zhǎng))?
"portrait":豎屏顯示(高比寬要長(zhǎng))?
"user":用戶當(dāng)前首選的方向?
"behind":和該Activity下面的那個(gè)Activity的方向一致(在Activity堆棧中的)?
"sensor":有物理的感應(yīng)器來(lái)決定。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會(huì)橫豎屏切換。?
"nosensor":忽略物理感應(yīng)器,這樣就不會(huì)隨著用戶旋轉(zhuǎn)設(shè)備而更改了("unspecified"設(shè)置除外)。

也可以在Java代碼中通過(guò)setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)來(lái)設(shè)置。

如果要讓軟件在橫豎屏之間切換,由于橫豎屏的高寬會(huì)發(fā)生轉(zhuǎn)換,有可能會(huì)要求不同的布局。可以通過(guò)以下方法來(lái)切換布局:

1)在res目錄下建立layout-land和layout-port目錄,相應(yīng)的layout文件不變,比如main.xml。layout-land是橫屏的layout,layout-port是豎屏的layout,其他的不用管,模擬器會(huì)自動(dòng)尋找。

2)通過(guò) this.getResources().getConfiguration().orientation來(lái)判斷當(dāng)前是橫屏還是豎屏然后來(lái)加載相應(yīng)的 xml布局文件。因?yàn)楫?dāng)屏幕變?yōu)闄M屏的時(shí)候,系統(tǒng)會(huì)重新呼叫當(dāng)前Activity的onCreate方法,你可以把以下方法放在你的onCreate中來(lái)檢查當(dāng)前的方向,然后可以讓你的setContentView來(lái)載入不同的layout xml.

1if?(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
2????Log.i("info",?"landscape");?// 橫屏
3}
4else?if?(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) {
5????Log.i("info",?"portrait");?// 豎屏
6}

在onConfigurationChanged()方法中也可以檢測(cè)擁有硬鍵盤(pán)的鍵盤(pán)狀態(tài)

1//檢測(cè)實(shí)體鍵盤(pán)的狀態(tài):推出或者合上   
2if?(newConfig.hardKeyboardHidden ==Configuration.HARDKEYBOARDHIDDEN_NO){
3???//實(shí)體鍵盤(pán)處于推出狀態(tài),在此處添加額外的處理代碼
4}
5else?if?(newConfig.hardKeyboardHidden ==Configuration.HARDKEYBOARDHIDDEN_YES){
6???//實(shí)體鍵盤(pán)處于合上狀態(tài),在此處添加額外的處理代碼
7}

2.重新載入問(wèn)題。如果不需要從新載入,可以在AndroidManifest.xml中加入配置 android:configChanges="orientation|keyboardHidden",配置 android:configChanges的作用就是如文檔所說(shuō)的:Specify one or more configuration changesthat the activity will handle itself. If not specified, the activity will berestarted if any of these configuration changes happen in the system。這樣在程序中Activity就不會(huì)重復(fù)的調(diào)用onCreate()甚至不會(huì)調(diào)用onPause、onResume.只會(huì)調(diào)用一個(gè) onConfigurationChanged(Configuration newConfig)。如果需要重新載入,則不需要做任何修改。不過(guò)如果需要在重新載入過(guò)程中保存之前的操作內(nèi)容或數(shù)據(jù),則需要保存之前的數(shù)據(jù)。然后在 activity的onCreate()中取出來(lái)。當(dāng)然,如此就不能設(shè)置android:configChanges()了,否則就不會(huì)調(diào)用 onCreate()方法。

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

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

android:screenOrientation="landscape",為橫屏顯示。

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

轉(zhuǎn)載于:https://www.cnblogs.com/DonkeyTomy/articles/3245988.html

總結(jié)

以上是生活随笔為你收集整理的【转】 Android 屏幕切换总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。