android - 如何使用 VideoSupportFragment 在 TV 倾斜应用程序中捕获触摸事件以显示视频控件?
问题描述
我在带有触摸屏的设备上使用图书馆VideoSupportFragment
。Leanback
我希望能够在触摸屏幕时显示视频控件,但我不知道如何启用它。是否有一些我可以连接的触摸或点击监听器?我试着勾搭,surfaceView
但从来没有得到这个事件。
谢谢。
解决方案
由于您使用的是leanback 应用程序,因此您可以通过覆盖活动中的 dispatchTouchEvent 方法来捕获触摸事件。
这是假设您的活动扩展了 AppCompatActivity,它是 FragmentActivity 的后代。
所以在你的活动中 -
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Fragment fragmentById = getSupportFragmentManager().findFragmentById(R.id.main_player_container);
if (fragmentById instanceof BasePlayerFragment) {
boolean consume = ((BasePlayerFragment) fragmentById).dispatchTouchEvent(ev);
if (consume) {
return true;
}
}
return super.dispatchTouchEvent(ev);
}
然后在扩展 SupportVideoFragment 的片段中(在本例中为 BasePlayerFragment) -
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// You can choose to display the SurfaceView once screen is pressed before even waiting for it to be released
}
if (ev.getAction() == MotionEvent.ACTION_UP) {
if (consumeViewSurface(ev)) {
return true;
}
}
return false;
}
private boolean consumeViewSurface(MotionEvent ev) {
if (mSurfaceView != null) {
// Do your code here and return true for letting the system know you handled the event.
return true;
}
// If the event didn't get handled return false
return false;
}
确保在处理完事件后返回 true,否则返回 false。
推荐阅读
- android - Android - RecyclerView 边框线颜色
- vbulletin - 辅助检查/更正 vBulletin 数据库的软件工具
- c# - 后处理:在特定图层上禁用运动模糊
- vb.net - 如何使用 vb.net 根据另一个下拉列表值更改下拉值
- tomcat - 来自 F5 负载均衡器虚拟 IP 时,Tomcat 8.5 不服务 http 请求
- text-to-speech - 如何从 Microsoft.CognitiveServices.Speech 获取详细语音识别结果
- java - 如何在 Lagom Framework 中进行删除操作?
- python-3.x - 如何逐行读取具有匹配字符串的文件到列表中
- python-3.x - Python 中的简单 HTTP 服务器。如何从 DIR_PATH 获取文件?
- swift - 如何在使用`if let`可选展开时获取参考(swift)