1

ビデオビューでビデオを表示しています:

私のXMLでは:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:gravity="center"
  android:layout_height="fill_parent">

    <VideoView
    android:layout_gravity="center"
    android:id="@+id/videoview_player"
    android:layout_width="wrap_content"
     android:layout_height="wrap_content" />

</LinearLayout>

これは完璧に機能するように見えました。ビデオのサイズが自動的に変更されるため、画面がいっぱいになりますが、ビデオのアスペクト比は維持されます。

しかし、タブレットでは、縦向きで 30 ~ 60 秒ほどすると、ビデオがフルスクリーンに伸びます。(縦横比を維持するのではなく、高さを伸ばします)

このような:

ここに画像の説明を入力

4

1 に答える 1

1

VideoView をサブクラス化することになりました。

public class PlayerVideoView extends VideoView{

    private int mForceHeight = 0;
    private int mForceWidth = 0;
    public PlayerVideoView(Context context) {
        super(context);
    }

    public PlayerVideoView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public PlayerVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setDimensions(int w, int h) {
        this.mForceHeight = h;
        this.mForceWidth = w;

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(mForceWidth, mForceHeight);
    }
}

onCreate のどこで寸法を設定しますか

videoView.setDimensions(800, 600);

次に、

@Override
public void onConfigurationChanged(Configuration newConfig) {..}

ユーザーのデバイスの向きに応じて、縦または横のサイズを手動で設定します。

于 2012-11-20T09:36:27.183 に答える