2012-10-29 79 views
12

的平臺:採用Android SDK 在Eclipse開發16的Android VideoView不玩縱向

問題: 我是應該填充整個屏幕爲480x800一個VideoView元素(人像ORIENTATION),它播放的很好,但不會定位到肖像。它採用橫向模式,長寬比偏斜以適合這種方式。

我有什麼企圖:採用了android清單中

  • screenOrientation = 「畫像」:方向= 「垂直」 在容器中,並使用setRequestedOrientation的VideoView本身
  • 採用了android

    • (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);右之前我打電話的setContentView
    • 試圖設置佈局的寬度和高度,以480dpx800dp代替FILL_PARENT
    • 試圖設置VideoView寬度和高度,以480像素X 800DP代替FILL_PARENT
    • 切斷自動旋轉顯示

    的XML:

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="480dp" 
        android:layout_height="800dp" 
        android:background="#000000" 
        android:orientation="vertical" > 
    
        <VideoView 
         android:id="@+id/opening_video" 
         android:layout_width="480dp" 
         android:layout_alignParentRight="true" 
         android:layout_alignParentLeft="true" 
         android:layout_alignParentTop="true" 
         android:layout_alignParentBottom="true" 
         android:layout_height="800dp" 
         android:orientation="vertical" /> 
    
        <ImageButton 
         android:id="@+id/imageButton1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@drawable/transparent_button" 
         android:contentDescription="@string/back_button_desc" 
         android:background="@android:color/transparent" /> 
    
    </RelativeLayout> 
    

    的代碼:

    @Override 
        public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
         setContentView(R.layout.activity_start_screen); 
    
         VideoView videoView = (VideoView) findViewById(R.id.opening_video); 
    
         Uri pathToVideo = Uri.parse("android.resource://com.example.consumerengage/" + R.raw.opening_tablet); 
         videoView.setVideoURI(pathToVideo); 
         videoView.setOnPreparedListener(new OnPreparedListener() { 
          @Override 
          public void onPrepared(MediaPlayer mp) { 
           mp.setLooping(true); 
          } 
         });   
    
         videoView.requestFocus(); 
         videoView.start(); 
    
         // boolean isPlaying = videoView.isPlaying() ; 
    
         // videoView.stopPlayback(); 
         // videoView.clearFocus(); 
    
         addListenerOnButton(); 
    
        } 
    

    問題: 沒有我曾嘗試是成功的。如何讓我的480x800視頻以縱向方向播放?

  • 回答

    0

    這裏是我落得這樣做:

    的問題是操作系統版本。如果它是ICS(4.0)及以上版本,它會播放視頻,所以當檢測到android.os.Build.VERSION.SDK_INT爲14或更高時,我加載在其側面構建的視頻,以便播放正確的方法。

    這是一個非常愚蠢的解決方法,我從來沒有真正得到我的問題的答案。視頻不應該這樣玩。

    0

    試試這個:

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="#000000"> 
    
        <VideoView 
         android:id="@+id/opening_video" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" /> 
    
        <ImageButton 
         android:id="@+id/imageButton1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@drawable/transparent_button" 
         android:contentDescription="@string/back_button_desc" 
         android:background="@android:color/transparent" /> 
    
    </RelativeLayout> 
    

    希望這有助於。還要檢查你的清單文件。

    +0

    將我的XML更改爲上述設置後,視頻仍然水平播放而不是垂直播放。 –

    +0

    @RickS您正在犯的錯誤是爲佈局和視頻視圖定義固定的高度和寬度。只需使用默認匹配父項,然後在清單文件的活動中只編寫android:screenOrientation =「portrait」。 –

    +0

    從你的活動清單文件 – AMD

    2

    你確定你的視頻是480x800而不是800x480嗎? 800x480是標準分辨率,如果您使用手機拍攝縱向視頻,則輸出仍將爲800x480,並且視頻應正常播放90度。您所描述的是如果您嘗試在480x800 videoView中播放800x480視頻會發生的情況。如果是這種情況,您可以使用Windows Live Moviemaker或iMovie等視頻編輯軟件進行旋轉,如果您使用的是Mac電腦。

    +0

    +1中刪除android:screenOrientation,看看這個。 –

    +0

    我們實際上使用專業剪輯軟件Final Cut Pro以幾種不同的分辨率,編解碼器和方向剪輯視頻。奇怪的是,它在一臺平板電腦上運行良好,但在另一臺平板電腦上很奇怪。 –

    +0

    @Rick S什麼平板電腦工作,什麼didn –

    1

    您正在使用dp,你應該使用px

    <VideoView 
        android:id="@+id/opening_video" 
        android:layout_width="480px" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:layout_alignParentBottom="true" 
        android:layout_height="800px" 
        android:orientation="vertical" /> 
    
    <ImageButton 
        android:id="@+id/imageButton1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/transparent_button" 
        android:contentDescription="@string/back_button_desc" 
        android:background="@android:color/transparent" /> 
    

    ,或者(和好) - 只需使用match_parent(或fill_parent):

    <VideoView 
        android:id="@+id/opening_video" 
        android:layout_width="match_parent" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:layout_alignParentBottom="true" 
        android:layout_height="match_parent" 
        android:orientation="vertical" /> 
    
    <ImageButton 
        android:id="@+id/imageButton1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/transparent_button" 
        android:contentDescription="@string/back_button_desc" 
        android:background="@android:color/transparent" />