Android VideoView 播放视频前先黑屏一下如何解决,完整代码
时间: 2023-11-28 16:48:49 浏览: 258
Android VideoView 在播放视频时,会先显示黑屏,这是因为在 VideoView 内部进行了初始化,会先把 SurfaceView 设置为透明色,然后再进行视频的播放。如果不想让用户看到黑屏,可以通过设置 VideoView 的背景色或者在 SurfaceView 上添加一个遮盖层来解决。
以下是一个示例代码:
布局文件 activity_main.xml:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" />
<View
android:id="@+id/cover_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" />
</RelativeLayout>
```
Java 代码 MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private VideoView videoView;
private View coverView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView = findViewById(R.id.video_view);
coverView = findViewById(R.id.cover_view);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video);
videoView.setVideoURI(uri);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
coverView.setVisibility(View.GONE);
videoView.start();
}
});
}
}
```
在这个示例中,我们在 VideoView 上设置了黑色的背景,然后在 VideoView 上方添加了一个白色的遮盖层。在视频准备好之后,我们隐藏了遮盖层,然后开始播放视频。这样就可以避免用户看到黑屏了。
阅读全文