導航:首頁 > 操作系統 > android監聽橫豎屏切換

android監聽橫豎屏切換

發布時間:2022-09-08 23:43:55

1. android 漫畫APP 豎屏 橫屏切換技術實現問題

、禁止橫豎屏轉換
Android橫豎屏切換在手機開發中比較常見,很多軟體在開發過程中為了避免橫豎屏切換時引發不必要的麻煩,通常禁止掉橫豎屏的切換,
通過在AndroidManifest.xml中設置activity中的android:screenOrientation屬性值來實現。
比如下列設置
android:screenOrientation="portrait"
則無論手機如何變動,擁有這個屬性的activity都將是豎屏顯示。
android:screenOrientation="landscape",為橫屏顯示。
上述修改也可以在java代碼中通過類似如下代碼來設置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
另外,android中每次屏幕的切換動會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次Create的時候載入配置,那樣,進行中的游戲就不會自動重啟了!

二、橫豎屏切換
如果要讓軟體在橫豎屏之間切換,由於橫豎屏的高寬會發生轉換,有可能會要求不同的布局。可以通過以下兩種方法來切換布局:
1)在res目錄下建立layout-land和layout-port目錄,相應的layout文件名不變,比如main.xml。layout-land是橫屏的layout,layout-port是豎屏的layout,其他的不用管,橫豎屏切換時程序為調用Activity的onCreate方法,從而載入相應的布局。
2)假如布局資源不按照如上設置,則可以通過java代碼來判斷當前是橫屏還是豎屏然後來載入相應的xml布局文件。因為當屏幕變為橫屏的時候,系統會重新呼叫當前Activity的onCreate方法,你可以把以下方法放在你的onCreate中來檢查當前的方向,然後可以讓你的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每次橫豎屏切換都會重新調用onPause-> onStop-> onDestory-> onCreate->onStart->onResume,為此涉及到內容和數據的保存和讀取,否則轉屏之前的內容就會消失了。很多時候這樣的結果讓程序繁瑣,為此Android提供了在manifest中設置android:configChanges屬性,從而讓Activity不延續上述的重建流程。在Android工程的Mainfest.xml中配置Activity:android:configChanges="keyboardHidden|orientation",橫豎屏切換之後就不會去執行OnCreat函數了,而是會去調用onConfigurationChanged()這樣就能控制橫豎屏的切換了。用戶可以在Activity或View的onConfigurationChanged(Configuration newConfig)函數中獲取當前橫豎屏參數。至於其調用順序跟touch時間的傳遞順序相似,不過他沒有消費事件的概念,會順次調用到每一個onConfigurationChanged函數。
需要重寫Activity的onConfigurationChanged方法。實現方式如下,不需要做太多的內容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
需要注意的是,onConfigurationChanged函數中只能獲得橫豎屏切換後的參數,在該函數中獲取不到新的Layout和控制項的尺寸位置信息,如果要處理尺寸和位置信息,必須通過消息非同步或者延時調用。
四、徹底禁止翻轉
當然如果要徹底禁止翻轉,可以設置android:screenOrientation的屬性為nosensor,如此就可以忽略重力感應帶來的麻煩了。不過在模擬器上不管用,在真機上是正確的。
這里提一個小知識,Android模擬器中,快捷鍵"Ctrl+F11/F12"可以實現轉屏
五,自適應轉換
如果想讓它啟動的時候是橫屏的話就橫屏表示,縱屏的話就縱屏表示,然後手機切換橫豎屏就不能用了該怎麼解決呢?
首先:在Mainfest.xml中追加
android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"
這兩個屬性。

2. android 如何判斷橫豎屏發生了切換

設置中有方向設置,勾選後把手機橫過來就是橫屏。

3. android 如何監聽屏幕當前是否全屏

可以在屏幕的Activity加監聽屏幕屬性改變,發生改變則檢查當前是否全屏狀態。
是全屏狀態發送,全屏的廣播消息,到監聽應用觸發操作。
@Override
public void onWindowAttributesChanged(LayoutParams params) {
// TODO Auto-generated method stub
super.onWindowAttributesChanged(params);
Log.e(TAG,"onWindowAttributesChanged()"+getWindow().getAttributes().flags);
if (WindowManager.LayoutParams.FLAG_FULLSCREEN == getWindow().getAttributes().flags) {
Log.e(TAG,"onWindowAttributesChanged() FLAG_FULLSCREEN");
}
}
(注意該判斷在屏幕切換橫豎屏是也會觸發,需要根據實際情況過濾橫豎屏切換的情況。)

4. Activity橫豎屏切換生命周期變化

onCreate ,
創建activity時調用。設置在該方法中,還以Bundle中可以提出用於創建該 Activity 所需的信息。
onStart ,
activity變為在屏幕上對用戶可見時,即獲得焦點時,會調用。
onResume ,
activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的)
onSaveInstanceState
onPause ,
activity被暫停或收回cpu和其他資源時調用,該方法用於保存活動狀態的
onStop ,
activity被停止並轉為不可見階段及後續的生命周期事件時,即失去焦點時調用
onDestroy ,
activity被完全從系統內存中移除時調用,該方法被調用可能是因為有人直接調用 finish()方法 或者系統決定停止該活動以釋放資源。
onRestoreInstanceState ,
Android在橫豎排切換時候,將主動銷毀activity和重新創建一個新的activity出來,在此過程中,onRestoreInstanceState就要被回調
onConfigurationChanged ,
配置指定屬性後,屏幕方向發生變化後回調此函數.

把該Activity添加
android:configChanges="orientation" ,
執行步驟3(切換成橫屏時)

android:configChanges="orientation" 對於4.04.0以上版本不生效

把該Activity添加 android:configChanges="orientation|screenSize" ,
執行步驟3(切換成橫屏時)

onConfigurationChanged-->
只列印onConfigChanged

把 android:configChanges="orientation|screenSize" 改成 android:configChanges="orientation|keyboardHidden|screenSize"
執行步驟3(切換橫屏幕)
只列印
onConfigChanged

執行步驟4(切換豎屏幕)
只列印onConfigChanged
切記一定要加上後邊的screenSize否則在4.0以上版本生命周期執行不生效。

當前Activity產生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變
Activity運行時按下HOME鍵(跟被完全覆蓋是一樣的):
onPause --> onStop onRestart -->onStart--->onResume
Activity未被完全覆蓋只是失去焦點:onPause--->onResume

測試用手機版本5.1.1
Android實現屏幕旋轉方法

這種方法的優點:即使屏幕旋轉,Activity也不會重新onCreate。
缺點:屏幕只有一個方向。

這個方法的優點:我們可以隨時監聽屏幕旋轉變化,並對應做出相應的操作;
缺點:它只能一次旋轉90度,如果一下子旋轉180度,onConfigurationChanged函數不會被調用。
4.設置方向的其他方式
在AndroidManifest.xml設置
橫向顯示,但是基於設備感測器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"

縱向顯示,但是基於設備感測器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"

demo

5. android 橫豎屏切換時載入不同的Activity怎麼做

第一步:創建布局文件
1.res/layout創建豎屏布局
2.res/layout-land 創建橫屏布局

布局文件名要一直
第二步:根據屏幕方向添加對應的布局。
在Activity的onCreate中判斷當前橫豎屏狀態
//橫屏
getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
//豎屏
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT

6. service怎麼監聽橫豎屏

幸好service中可以重寫橫豎屏切換的監聽,於是我在橫豎屏切換的監聽方法中 移除原來的懸浮求,重新add懸浮求。問題就解決了。

@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);//切換為豎屏if (newConfig.orientation == this.getResources().getConfiguration().ORIENTATION_PORTRAIT) {}//切換為橫屏else if (newConfig.orientation == this.getResources().getConfiguration().ORIENTATION_LANDSCAPE) {}}

7. android怎麼監聽系統是否是全屏顯示

可以在屏幕的Activity加監聽屏幕屬性改變,發生改變則檢查當前是否全屏狀態。
是全屏狀態發送,全屏的廣播消息,到監聽應用觸發操作。
@Override
public void onWindowAttributesChanged(LayoutParams params) {
// TODO Auto-generated method stub
super.onWindowAttributesChanged(params);
Log.e(TAG,"onWindowAttributesChanged()"+getWindow().getAttributes().flags);
if (WindowManager.LayoutParams.FLAG_FULLSCREEN == getWindow().getAttributes().flags) {
Log.e(TAG,"onWindowAttributesChanged() FLAG_FULLSCREEN");
}
}
(注意該判斷在屏幕切換橫豎屏是也會觸發,需要根據實際情況過濾橫豎屏切換的情況。)

8. 如何在android studio中實現 橫屏 和縱屏 的切換

在AndroidManifest.xml的每一個需要禁止轉向的Activity配置中加入android:screenOrientation=」landscape」 屬性。
參數說明:
1. landscape = 橫向
2. portrait = 縱向

避免在轉屏時重啟Activity
android中每次屏幕方向切換時都會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次 Create的時候載入配置,那樣,進行中的游戲就不會自動重啟了!
要避免在轉屏時重啟Activity,可以通過在AndroidManifest.xml文件中重新定義方向(給每個Activity加上 android:configChanges=」keyboardHidden|orientation」屬性)。
在需要控制屏幕顯示方向的Activity中重寫 onConfigurationChanged(Configuration newConfig)方法,這樣在轉屏時就不會重啟Activity了。

9. android怎麼設置橫豎屏切換

方法一:

1、首先在android手機打開「設置」這個選項的,點擊「顯示」這個功能;

閱讀全文

與android監聽橫豎屏切換相關的資料

熱點內容
壓縮空氣軟管製作方法 瀏覽:905
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:714
證明代碼是程序員寫的 瀏覽:397
演算法錯誤發現辦法 瀏覽:410
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:10
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449
求索記錄頻道哪個app可以看 瀏覽:730
金梅瓶pdf下載 瀏覽:985
機器軟體用什麼編程 瀏覽:845