在VideoView中播放视频时,Android后退按钮不起作用 [英] Android back button not working while playing video in VideoView
问题描述
在VideoView中播放视频时,Android后退按钮不起作用.但这在播放视频之前有效.我正在为VideoView使用自定义MediaController.
我尝试使用 dispatchKeyEvent ,它不起作用.
正在使用VideoView的活动代码:
Android back button is not working while playing the video in VideoView. But it works before playing the video. I am using a custom MediaController for VideoView.
I tried using dispatchKeyEvent, its not working.
Code of Activity that am using VideoView:
mc = new CustomMediaController(mVideo.getContext(), screenIcon) {
@Override
public void hide(){
}
@Override
public boolean dispatchKeyEvent(KeyEvent event){
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
super.hide();
((Activity) getContext()).finish();
return true;
}
return super.dispatchKeyEvent(event);
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
onBackPressed();
finish();
}
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
CustomMediaController还包含dispatchKeyEvent:
CustomMediaController also contains dispatchKeyEvent:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
((Activity) getContext()).finish();
}
return super.dispatchKeyEvent(event);
}
此外,当我滚动布局时,mediaController不会在videoView中保持其位置.为解决此错误,我添加了一个代码来修复mediaController的位置.
Also when I scroll the layout, mediaController was not maintaining its position in videoView. To resolve this bug, I've added a code to fix the mediaController position.
FrameLayout f;
RelativeLayout.LayoutParams lp;
RelativeLayout.LayoutParams params;
params = (RelativeLayout.LayoutParams) mVideo.getLayoutParams();
params.height = mp.getVideoHeight();
progress.dismiss();
f = (FrameLayout) mc.getParent();
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_BOTTOM, mVideo.getId());
try {
((LinearLayout) f.getParent()).removeView(f);
} catch (Exception e) {
((RelativeLayout) f.getParent()).removeView(f);
}
((RelativeLayout) mVideo.getParent()).addView(f, lp);
//mc.setAnchorView(mVideo);
mVideo.setLayoutParams(params);
当我删除上面的代码时,返回按钮非常有效.
Back button works perfect when I remove this above code.
我在堆栈溢出中经历了以下问题,但没有解决我的问题.
我尝试过的堆栈溢出链接:
Android后退按钮和MediaController
当VideoView播放视频时,后退按钮将不起作用
播放视频时未捕获到未按下第一后退"按钮的情况android
VideoView中的带有后退按钮的问题
I went through the following questions in stack overflow itself but didn't resolved my issue.
Stack Overflow links I tried:
Android back button and MediaController
Back button won't work when VideoView is playing video
First Back button press not caught when playing a video android
Problem with back button in VideoView
推荐答案
在我的mediacontroller中覆盖了dispatchKeyEvent()之后,效果很好
After override the dispatchKeyEvent() in my mediacontroller it works fine
mediaController=new MediaController(this){
@Override
public void hide() {
mediaController.show();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event){
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
super.hide();
((Activity) getContext()).finish();
return true;
}
return super.dispatchKeyEvent(event);
}
};
videoView.setMediaController(mediaController);
这篇关于在VideoView中播放视频时,Android后退按钮不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!