在使用onTouchEvent和onTouch进行了多次实验后,我发现onTouch可以在任何地方工作(无论是在活动中还是在视图中),只要您声明了接口并将Listener放在正确的位置即可!另一方面,onTouchEvent仅适用于View!我的假设是否正确?这是真正的区别吗?
我正在 ExoPlayer 之上开发自定义 UI,我注意到控件 ( PlaybackControlView) 在我触摸屏幕时隐藏,而不是在我单击时隐藏。
我想更改为单击并检查如何更改事件侦听器,但到目前为止找不到简单的解决方案。我检查了源代码SimpleExoPlayerView.java,我注意到它实际上是硬编码的:
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!useController || player == null || ev.getActionMasked() != MotionEvent.ACTION_DOWN) {
return false;
}
if (controller.isVisible()) {
controller.hide();
} else {
maybeShowController(true);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可以想到两种解决方案。一种是更改 ExoPlayer 的源代码,但我不喜欢它,因为每次更新 ExoPlayer 时都必须进行修改。
我能想到的第二个解决方案是简单地尝试自己处理它,例如添加我自己的侦听器,并自己显示和隐藏控件。我还没有尝试过,但似乎有可能。
是否有另一个更好的解决方案,例如覆盖侦听器等?
更新:我通过膨胀 exo_playback_control_view.xml 使用自定义 UI