Android強制設定橫屏時,SurfaceView一直黑屏

  接着上一個問題,解決了SurfaceView閃屏問題以後(http://www.cnblogs.com/Joanna-Yan/p/4829325.html),又有了一個新的問題。如今我想設置含有fragment+viewpager的activity橫屏。其中一個fragment有視頻播放功能,含SurfaceView.html

當我橫屏拿着平板時,打開程序進入到該activity,是正常的。當豎屏拿着打開程序進入到該activity時,就會一直處於黑屏的狀態。緣由應該仍是SurfaceView。難道程序轉入後臺或者黑屏之後(只要是不繪製狀態),屏幕方向就是系統默認的屏幕方向嗎?java

解決:android

1.在AndroidManifest.xml的對應的activty中,設置android:screenOrientation="nosensor",即 忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了 ( "unspecified"設置除外 )app

設置android:configChanges="orientation|keyboardHidden|keyboard",橫豎屏切換時,不會從新加載頁面。ide

2.在對應的Activity中設置橫屏。setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);佈局

相關詳解:關於Android設置全屏和橫屏idea

橫屏設置spa

XML文件設置--portrait爲縱向,landscape爲橫向code

android:screenOrientation=["unspecified" | "user" | "behind" |"landscape" | "portrait" | "sensor" | "nonsensor"]視頻

screenOrientation 用來指定Activity的在設備上顯示的方向,每一個值表明以下含義:
"unspecified"     默認值 由系統來判斷顯示方向.斷定的策略是和設備相關的,因此不一樣的設備會有不一樣的顯示方向.
"landscape"     橫屏顯示(寬比高要長)
"portrait"     豎屏顯示(高比寬要長)
"user"     用戶當前首選的方向
"behind"     和該Activity下面的那個Activity的方向一致(在Activity堆棧中的)
"sensor"     有物理的感應器來決定。若是用戶旋轉設備這屏幕會橫豎屏切換。
"nosensor"     忽略物理感應器,這樣就不會隨着用戶旋轉設備而更改了 ( "unspecified"設置除外 )。
代碼設置

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

 

全屏兩種方法:

方法一:java代碼

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設置無標題 
 requestWindowFeature(Window.FEATURE_NO_TITLE); //設置全屏 
 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>  
相關文章
相關標籤/搜索