在Android 7+中,可以使用ExoPlayer库来实现视频播放功能。要设置视频播放器的宽高比,可以通过设置SurfaceView或TextureView的宽高比来实现。
以下是一个示例代码,展示如何使用ExoPlayer库创建一个简单的视频播放器,并设置宽高比为16:9:
import android.net.Uri;
import android.os.Bundle;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
public class MainActivity extends AppCompatActivity {
private PlayerView playerView;
private SimpleExoPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建ExoPlayer实例
player = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector());
// 从assets目录下加载视频文件
String videoUri = "file:///android_asset/sample.mp4";
ExtractorMediaSource mediaSource = new ExtractorMediaSource.Factory(
new DefaultDataSourceFactory(this, Util.getUserAgent(this, "ExoPlayerDemo")))
.createMediaSource(Uri.parse(videoUri));
// 准备播放器
player.prepare(mediaSource);
// 将播放器与PlayerView关联
playerView = findViewById(R.id.player_view);
playerView.setPlayer(player);
// 设置宽高比为16:9
playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH);
playerView.setAspectRatio(16f / 9f);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放播放器资源
player.release();
}
}
在上述示例代码中,我们首先创建了一个ExoPlayer实例,并通过setPlayer()
方法将其与PlayerView关联。然后,我们通过setResizeMode()
方法设置播放器的调整模式为RESIZE_MODE_FIXED_WIDTH
,这将使播放器根据指定的宽高比自动调整高度以适应宽度。最后,我们通过setAspectRatio()
方法设置宽高比为16:9。
请注意,上述示例中的R.layout.activity_main
是一个包含一个PlayerView的布局文件,你需要根据自己的布局文件进行相应的修改。