Android強(qiáng)制設(shè)定橫屏?xí)r,SurfaceView一直黑屏
接著上一個問題,解決了SurfaceView閃屏問題之后(http://www.dbjr.com.cn/article/101909.htm),又有了一個新的問題?,F(xiàn)在我想設(shè)置含有fragment+viewpager的activity橫屏。其中一個fragment有視頻播放功能,含SurfaceView.
當(dāng)我橫屏拿著平板時,打開程序進(jìn)入到該activity,是正常的。當(dāng)豎屏拿著打開程序進(jìn)入到該activity時,就會一直處于黑屏的狀態(tài)。原因應(yīng)該還是SurfaceView。難道程序轉(zhuǎn)入后臺或者黑屏以后(只要是不繪制狀態(tài)),屏幕方向就是系統(tǒng)默認(rèn)的屏幕方向嗎?
解決:
1.在AndroidManifest.xml的對應(yīng)的activty中,設(shè)置android:screenOrientation="nosensor",即 忽略物理感應(yīng)器,這樣就不會隨著用戶旋轉(zhuǎn)設(shè)備而更改了 ( "unspecified"設(shè)置除外 )
設(shè)置android:configChanges="orientation|keyboardHidden|keyboard",橫豎屏切換時,不會重新加載頁面。
2.在對應(yīng)的Activity中設(shè)置橫屏。setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
相關(guān)詳解:關(guān)于Android設(shè)置全屏和橫屏
橫屏設(shè)置
XML文件設(shè)置--portrait為縱向,landscape為橫向
android:screenOrientation=["unspecified" | "user" | "behind" |"landscape" | "portrait" | "sensor" | "nonsensor"]
screenOrientation 用來指定Activity的在設(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è)置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
全屏兩種方法:
方法一:java代碼
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設(shè)置無標(biāo)題 requestWindowFeature(Window.FEATURE_NO_TITLE); //設(shè)置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); }
方法二:xml布局
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.andyidea" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name" > <activity android:name=".login.LoginActivity" android:label="@string/app_name" android:theme="@android:style/android.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
RecyclerView進(jìn)階:使用ItemTouchHelper實現(xiàn)拖拽和側(cè)滑刪除效果
現(xiàn)在RecyclerView的應(yīng)用越來越廣泛了,本篇文章主要介紹了RecyclerView進(jìn)階:使用ItemTouchHelper實現(xiàn)拖拽和側(cè)滑刪除效果,具有一定的參考價值,有興趣的可以了解一下。2017-02-02Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11詳解Android 在 ViewPager 中使用 Fragment 的懶加載
本篇文章主要介紹了Android 在 ViewPager 中使用 Fragment 的懶加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06分析Android App中內(nèi)置換膚功能的實現(xiàn)方式
這篇文章主要介紹了Android App中內(nèi)置換膚功能的實現(xiàn)方式,文中舉了一個類似QQ空間中換膚方式的例子作為說明,需要的朋友可以參考下2016-02-02