Ron*_*nie 27 android back-button back mediacontroller
我知道如何控制后退按钮.我有一个VideoView
嵌入式FrameLayout
.我的问题是当视频弹出时,视频控件会出现几秒钟.在可见时按下后退按钮会隐藏视频控件.有没有办法忽略该功能并执行下一步后退操作,就好像视频控件不可见?
我问的原因是,如果我真的想要回去,我必须按两次后退按钮; 一次隐藏控件,第二次实际返回
Com*_*are 31
根据源代码,这应该工作:
MediaController
(为了这个答案的目的,称之为RonnieMediaController
)dispatchKeyEvent()
在RonnieMediaController
KeyEvent.KEYCODE_BACK
,如果遇到这种情况,请告诉您的活动finish()
RonnieMediaController
而不是MediaController
用你的VideoView
就个人而言,我只是不管它,因为这个改变你的用户无法RonnieMediaController
按需消失.
Ser*_*Him 17
你可以简单地写:
mVideoView.setMediaController(new MediaController(this){
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
((Activity) getContext()).finish();
return super.dispatchKeyEvent(event);
}
});
Run Code Online (Sandbox Code Playgroud)
无需创建新类.
小智 8
以前的解决方案不再适用于 Android Pie +,您必须改为:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
mediaController.addOnUnhandledKeyEventListener((v, event) -> {
//Handle BACK button
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP)
{
mediaController.hide(); //Hide mediaController,according to your needs, you can also called here onBackPressed() or finish()
}
return true;
});
}
Run Code Online (Sandbox Code Playgroud)
您还可以让Activity处理事件:
mVideoView.setMediaController(new MediaController(this){
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
((Activity) getContext()).onBackPressed();
return true;
}
}
return super.dispatchKeyEvent(event);
}
});
Run Code Online (Sandbox Code Playgroud)
然后在您的Activity中处理它:
@Override
public void onBackPressed() {
// clean up or send result here
finish();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7822 次 |
最近记录: |