在VideoView中播放视频时,Android后退按钮不起作用 [英] Android back button not working while playing video in VideoView

查看:517
本文介绍了在VideoView中播放视频时,Android后退按钮不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆