0

私の質問には 2 つの部分があります。

  1. 全画面表示ではない Android ビューでビデオを再生するにはどうすればよいですか (どのチュートリアルでも完璧です)。
  2. ビデオの再生中にそのビューのサイズを変更したり位置を変更したりできますか?
4

1 に答える 1

2

この種のビデオ操作については、TextureViewを確認する必要があります。

このビューは、MediaPlayerを介してビデオをレンダリングするために使用でき、必要な変換を適用できます。

これを使用してビデオを再生する方法の簡単な例を次に示します(ダムスケーリングアニメーションを使用)。

public class TestActivity extends Activity implements SurfaceTextureListener {

private static final String VIDEO_URL = "http://www.808.dk/pics/video/gizmo.mp4";

private MediaPlayer player;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    player = MediaPlayer.create(this, Uri.parse(VIDEO_URL));

    setContentView(R.layout.main);

    TextureView videoView = (TextureView) findViewById(R.id.video);
    videoView.setSurfaceTextureListener(this);


    // Scaling
    Animation scaling = new ScaleAnimation(0.2f, 1.0f, 0.2f, 1.0f);
    scaling.setDuration(2000);
    videoView.startAnimation(scaling);
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    player.setSurface(new Surface(surface));
    player.start();
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { }

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { return false; }

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) { }
}

次のmain.xmlを使用します。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextureView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

このTextureViewは、APIレベル>=14でのみ使用できることに注意してください。

于 2012-11-19T13:53:21.803 に答える