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

android橫豎屏切換監聽

發布時間:2023-03-19 09:18:19

『壹』 android只支持橫屏旋轉,監聽自動旋轉開關

設置橫屏其實很簡單,就是設置android:screenOrientation就可以。所以我們先來了解一下android:screenOrientation的屬性都有哪些?
unspecified,默認值,由系統決定,不同手機可能不一致
landscape,強制橫屏顯示
portrait,強制豎屏顯
behind,與前一個activity方向相同
sensor,根據物理感測器方向轉動,用戶90度、180度、270度旋轉手機方向,activity都更著變化
sensorLandscape,橫屏旋轉,一般橫屏游戲會這樣設置
sensorPortrait,豎碰埋屏旋轉
nosensor,旋轉設備時候,界面不會跟著旋轉。初始化界面方向由系統控制
user,用戶當前設置的方向
而滿足我們需求的屬性,分別為

1 landscape :強制橫屏,不管自動旋轉開關是否開啟,都只能是正方向橫屏,不會180度旋轉
2 sensorLandscape : 橫屏旋轉,不管自動旋轉開關是否開啟,都會180度旋轉
這兩個屬性明顯不滿足我們的需求,這時候我們只能去監聽自動旋轉開關的狀態,然後設置對應的screenOrientation,這樣才能滿足需求。

但是這只是一次獲取,所以我們需求實時監聽開關狀態。

我們通過譽吵肆ContentObserver來監聽自動開關狀態的改變

了解了這些之後,我們就能完成需求了

1 初始化監聽

2 注冊監聽慶轎

3 退出時取消監聽

4 相關的類與方法

『貳』 React native orientation 屏幕旋轉監聽

android 和 iOS 都有在全局設置中固定屏幕方向的辦謹納法,但這樣不是特別理桐冊想,因為項目中,在不同頁面可能會需要橫屏或局晌宏豎屏,此時就可以使用 react-native-orientation ,這個擴展可以動態的鎖定/解鎖屏幕方向,或設置為指定的方向。

安裝方式

yarn add react-native-orientation

安裝完之後二選一 (這個是 rn 安裝原生組件的通用命令)

詳情可參考 官方介紹 或 這篇文章

然後繼續

android 打開 android/app/src/main/java/com/[project]/MainActivity.java

iOS 打開 ios/[project]/AppDelegate.m

安裝完事

使用方法,可直接前往 項目主頁 查看,非常簡單(其實上面的步驟在項目主頁中也有),這里說一個項目主頁沒提到的

在使用了如 lockToPortrait() 方法鎖定屏幕方向後,由 addOrientationListener 添加的監聽函數有不同

1、android 上將不會再觸發,直到調用 unlockAllOrientations() 解除鎖定
2、iOS 則不然,無論屏幕鎖定與否,都會觸發

『叄』 android屏幕轉換監聽的調用public void onConfigurationChanged(Configuration config) 次數的問題

看下這個吧我賣塵哪匯總的:Android橫兄簡豎切屏注意事項中碼
http://hi..com/spare_h/blog/item/11ec0b508163b90e377abeee.html

『肆』 android 橫屏狀態,如何監聽鍵盤的彈起與隱藏

android鍵盤監聽不了,只有監聽布局的狀態,所以要重寫布局進行監聽

『伍』 如何在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了。

『陸』 Android教程-屏幕方向-橫豎屏切換

標簽中設置:android:screenOrientation
Activity 在設備上的顯示方向。如果 Activity 是在 多窗口模式 下運行,系統會忽略該屬性。

其值可以是下列任一字元串:

例如: android:screenOrientation="landscape" 橫屏 android:screenOrientation="portrait" 豎屏

『柒』 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

『捌』 android 如何監聽前後台切換

        這段時間有需求,需要利用aop切面技術完成數據統計的工作,其中需要統計活躍(定的規則是:用戶從後台切換到前台就算一次活躍)。所以關於如何監聽前後台切換就有以下的描寫。

一.使用ActivityLifecycleCallbacks簡單app進入後台

有時需要監聽到應用在前後台切換並做些處理,一般的做法可能是建立一個BaseActivity,然後全部的Activity都繼承它,在BaseActivity的onStart和onStop中計數去處理。這樣並不是最好的方式,不做詳細介紹,有更好的方式,道理其實差不多,就是藉助ActivityLifecycleCallbacks來實現。

1)寫了個幫助類:

2)Application中使用(注意:僅在Application中才能使用,因為Application的生命周期能監聽到每個Activity)

原文地址: https://blog.csdn.net/bzlj2912009596/article/details/80073396

『玖』 VideoView+MediaController橫向全屏視頻播放+緩沖監聽

VideoView繼承了SurfaceView同時實現了MediaPlayerControl介面,MediaController是安卓封裝的輔助控制器,帶有暫停,播放,停止,進度條等控制項。通過VideoView+MediaController可以很輕松的實現視頻播放、停止、快進、快退等功能。

重寫VideoView實現全屏

布局直接布局引用

VideoView與MediaController建立關聯

在控制器Activity設置清單文件

android:configChanges="orientation|screenSize|keyboardHidden"

android:screenOrientation="landscape" //Activity 初始默認橫豎屏狀態

備註:對android:configChanges屬性,一般認為有以下幾點:

1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次

2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次

3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法

但是,自從Android 3.2(API 13),在設置Activity的android:configChanges="orientation|keyboardHidden"後,還是一樣會重新調用各個生命周期的。因為screen size也開始跟著設備的橫豎切換而改變。所以,在AndroidManifest.xml里設置的MiniSdkVersion和 TargetSdkVersion屬性大於等於13的情況下,如果你想阻止程序在運行時重新載入Activity,除了設置"orientation",你還必須設置"ScreenSize"。

設置緩沖狀態監聽,第一次載入視頻的時候不會走緩沖狀態,第一次視頻載入出來會走 播放狀態,然後以後緩存的同時會走緩存狀態

『拾』 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");
}
}
(注意該判斷在屏幕切換橫豎屏是也會觸發,需要根據實際情況過濾橫豎屏切換的情況。)

閱讀全文

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

熱點內容
一加7pro文件夾data 瀏覽:424
程序員淋雨 瀏覽:947
python輸出數字序列中的空格 瀏覽:78
怎麼將pdf文件大小 瀏覽:734
氧原子相對分子量演算法 瀏覽:988
加密機為什麼是安全的 瀏覽:451
單片機拼音輸入法 瀏覽:789
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:739
方舟編譯器現在可提速哪些軟體 瀏覽:60
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:604
蘋果13如何加密視頻 瀏覽:815
linuxweblogic緩存 瀏覽:69
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:378
找pdf 瀏覽:530
與伺服器連接斷開如何處理 瀏覽:833