0. 准备视频.mp4放在res/raw内
1. 布局文件:activity_launch_video.xml
宽度自适应大小居中,高度占满全屏,设置背景色。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#01030F"
android:gravity="center_horizontal">
<VideoView
android:id="@+id/video_view"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:clickable="false"
android:focusable="false"
android:background="#01030F"
android:focusableInTouchMode="false"/>
</LinearLayout>
2. java文件:LaunchVideoActivity.java
public class LaunchVideoActivity extends YunBaseActivity {
@BindView(R.id.video_view)
VideoView videoView;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
//隐藏状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_launch_video);
ButterKnife.bind(this);
initView();
}
private void initView() {
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.launch_galaxy);
videoView.setVideoURI(uri);
//视频准备好后渲染的第一帧视频时,背景色透明
videoView.setOnPreparedListener(mp -> mp.setOnInfoListener((mp1, what, extra) -> {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START){
videoView.setBackgroundColor(Color.TRANSPARENT);
}
return true;
}));
//不循环播放,结束跳转登录页面
videoView.setOnCompletionListener(mp -> {
if (isFinishing()){
return;
}
LoginActivity.startActivity(LaunchVideoActivity.this);
finish();
});
videoView.start();
}
}
!出现bug:华为 Android8.0.0无法启动app,应用多次异常退出
原因: 在清单文件固定了竖屏android:screenOrientation=“portrait”,而8.0会报出错误日志:只有在不透明的全屏activity可以自主设置界面方向。
解决: 改为在代码中固定竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
现存问题:部分网速差、加载速度慢的手机会黑屏,不能正常播放。