我的问题有 2 个部分。
- 如何(任何教程都是完美的)我可以在非全屏的 Android 视图中播放视频?
- 我可以在播放视频时调整该视图的大小和位置吗?
对于这种视频操作,您绝对应该看看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。