Vig*_*esh 57 android android-videoview
我VideoView在我的活动中创建了一个,下面是代码.
VideoView vvVideos = (VideoView) rootView.findViewById(R.id.videoView);
MediaController mediacontroller = new MediaController(ctx);
mediacontroller.setAnchorView(vvVideos);
Uri video = Uri.parse("android.resource://" + packageName +"/"+R.raw.sample);
vvVideos.setMediaController(mediacontroller);
LayoutParams params=vvVideos.getLayoutParams();
params.height=150;
vvVideos.setLayoutParams(params);
vvVideos.setVideoURI(video);
vvVideos.requestFocus();
vvVideos.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
vvVideos.start();
}
});
Run Code Online (Sandbox Code Playgroud)
现在,视频在创建活动时开始播放.我想让我的活动如下
Jos*_*ter 105
seekTo( 1 )以显示第一帧.确保影片已暂停,然后用于seekTo()显示视频的第一帧:
VideoView mVideoView = (VideoView) findViewById( R.id.video_preview );
mVideoView.setVideoURI( yourVideoPath );
mVideoView.seekTo( 1 ); // 1 millisecond (0.001 s) into the clip.
Run Code Online (Sandbox Code Playgroud)
注意:我们使用.seekTo( 1 )因为设置.seekTo( 0 )在Android 9上不起作用.
@Lingviston在另一个答案中回答了点击时播放的内容.
Shi*_*jil 27
使用此创建视频缩略图
Bitmap thumb = ThumbnailUtils.createVideoThumbnail("file path/url",
MediaStore.Images.Thumbnails.MINI_KIND);
Run Code Online (Sandbox Code Playgroud)
并设置为videoview
BitmapDrawable bitmapDrawable = new BitmapDrawable(thumb);
mVideoView.setBackgroundDrawable(bitmapDrawable);
Run Code Online (Sandbox Code Playgroud)
1)删除你的onPrepareListener.我不知道为什么你的视频在活动创建后开始播放,但是在videoView.start()之后调用onPrepareListener.
2)在VideoView顶部的布局中添加一个ImageView小部件.然后像这样设置另一个onPrepareListener:
vvVideos.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
previewImage.setVisibility(View.GONE);
}
});
Run Code Online (Sandbox Code Playgroud)
我注意到onPreparedListener太早启动,所以你可以使用
new Handler().postDelay(Runnable, timeInMilis)
取消预览图像.
3)向您添加带有任何手势检测的OnTouchListener VideoView.这是我现在使用的一个例子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
mGestureDetector = new GestureDetector(this, mGestureListener);
((VideoView) findViewById(R.id.activity_video_videoview)).setOnTouchListener(mTouchListener);
}
private OnTouchListener mTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return true;
}
};
private SimpleOnGestureListener mGestureListener = new SimpleOnGestureListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if(mVideoView.isPlaying())
mVideoView.pause();
else
mVideoView.start();
return true;
};
};
Run Code Online (Sandbox Code Playgroud)
它通过点击开始/停止播放.
您可以使用Glide 4.x。它将获取视频的第一帧,并在ImageView
添加到您的 build.gradle
implementation 'com.github.bumptech.glide:glide:4.x.x'
Run Code Online (Sandbox Code Playgroud)
在你班上
GlideApp.with(context)
.load("your video URL")
.into(videoImageView);;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66093 次 |
| 最近记录: |