Abh*_*k V 21 android video-streaming android-videoview
我VideoView最初隐藏了,当视频加载时我正在显示VideoView.但是onPrepared,如果是从来没有所谓VideoView的invisible最初阶段.但是onPrepared如果VideoView可见,则被正确调用.有没有办法隐藏videoView直到视频加载.任何帮助,将不胜感激.谢谢!
activity_main.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:visibility="invisible" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoView videoView = (VideoView) findViewById(R.id.video);
Uri videoUri = Uri.parse(url);
videoView.setVideoURI(videoUri);
videoView.requestFocus();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Toast.makeText(mActivity, "on prepared", Toast.LENGTH_SHORT).show();
videoView.setVisibility(View.VISIBLE);
}
});
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试将视频视图的Alpha通道设置为0或接近0.
小智 5
解决了使其布局不可见而不是 videoView 本身的问题。感谢@J.Kowalski。
布局:
<FrameLayout
android:id="@+id/layout_video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:scrollbars="none"/>
</FrameLayout>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
/>
Run Code Online (Sandbox Code Playgroud)
设置 OnPreparedListener:
videoView.setOnPreparedListener(this);
Run Code Online (Sandbox Code Playgroud)
准备好之前显示进度条:
@Override
public void showProgress() {
progress.setVisibility(View.VISIBLE);
layoutVideoView.setVisibility(View.INVISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
加载视频 URI:
@Override
public void loadVideo(Uri uri) {
videoView.setVideoURI(uri);
}
Run Code Online (Sandbox Code Playgroud)
准备就绪后,将调用 onPrepared:
@Override
public void onPrepared(MediaPlayer mp) {
Log.d("debug", "onPrepared");
iStepPreviewPresenter.onVideoViewReady();
}
Run Code Online (Sandbox Code Playgroud)
最后显示布局并开始视频:
@Override
public void hideProgress() {
progress.setVisibility(View.INVISIBLE);
layoutVideoView.setVisibility(View.VISIBLE);
}
@Override
public void startVideo() {
videoView.start();
}
Run Code Online (Sandbox Code Playgroud)
搞定了!
| 归档时间: |
|
| 查看次数: |
10181 次 |
| 最近记录: |