13

プラットフォーム: AndroidSDK16を使用したEclipseでの開発。

問題: 画面全体を480x800(縦向き)で塗りつぶすはずのVideoView要素があり、正常に再生されますが、縦向きにはなりません。横向きモードのままで、アスペクト比はそのように調整されます。

私が試みたこと:

  • マニフェストでandroid:screenOrientation="portrait"を使用する
  • コンテナとVideoView自体でandroid:orientation="vertical"を使用する
  • setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);を使用します。setContentViewを呼び出す直前
  • レイアウトの幅と高さをfill_parentではなく480dpx800dpに設定しようとしています
  • VideoViewの幅と高さをfill_parentではなく480pxx800dpに設定しようとしています
  • 自動回転表示をオフにする

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のビデオを縦向きで再生するにはどうすればよいですか?

4

4 に答える 4

2

あなたのビデオは800x480ではなく480x800であると確信していますか?800x480が標準の解像度です。携帯電話で縦向きにビデオを録画する場合、出力は800x480のままであり、通常の再生を行うには、ビデオを90度回転させる必要があります。あなたが説明しているのは、480x800のvideoViewで800x480のビデオを再生しようとするとどうなるかということです。この場合、Macを使用している場合は、WindowsLiveムービーメーカーやiMovieなどのビデオ編集ソフトウェアを使用して回転させることができます。

于 2013-02-19T14:45:34.960 に答える
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" />

于 2013-02-20T19:02:35.263 に答える
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>

お役に立てれば。また、マニフェストファイルも確認してください。

于 2012-10-29T06:18:45.300 に答える
0

これが私がやったことです:

問題はOSのバージョンでした。ICS(4.0)以降の場合は、横向きで動画を再生するので、14以上のandroid.os.Build.VERSION.SDK_INTを検出すると、横向きに作成された動画を読み込んで、正しい方法。

これは非常にばかげた回避策であり、私は自分の質問に対する答えを実際に得ることはありませんでした。ビデオはそのように再生されるべきではありません。

于 2013-08-08T21:09:46.450 に答える