Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android強制設定橫屏時,SurfaceView一直黑屏

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

編輯:關於Android編程

接著上一個問題,解決了SurfaceView閃屏問題之後(http://www.jb51.net/article/101909.htm),又有了一個新的問題。現在我想設置含有fragment+viewpager的activity橫屏。其中一個fragment有視頻播放功能,含SurfaceView.

當我橫屏拿著平板時,打開程序進入到該activity,是正常的。當豎屏拿著打開程序進入到該activity時,就會一直處於黑屏的狀態。原因應該還是SurfaceView。難道程序轉入後台或者黑屏以後(只要是不繪制狀態),屏幕方向就是系統默認的屏幕方向嗎?

解決:

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

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

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

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

橫屏設置

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

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>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持本站!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved