android - 如何使用 VideoSupportFragment 在 TV Leanback 应用程序中捕获触摸事件以显示视频控件?

标签 android android-tv leanback

我在带触摸屏的设备上使用 Leanback 库中的 VideoSupportFragment。我希望能够在触摸屏幕时显示视频控件,但我不知道如何启用它。我可以连接一些触摸或点击监听器吗?我尝试连接到 surfaceView 但从未收到事件。

谢谢。

最佳答案

由于您使用的是 Leanback 应用程序,因此您可以通过覆盖 Activity 中的 dispatchTouchEvent 方法来捕获触摸事件。

这是假设您的 Activity 扩展了 AppCompatActivity,它是 FragmentActivity 的后代。

所以在你的 Activity 中 -

@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)的 fragment 中 -

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 - 如何使用 VideoSupportFragment 在 TV Leanback 应用程序中捕获触摸事件以显示视频控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58907282/

相关文章:

Android:无论屏幕类型如何,都将 TextView 保持在位图上的相同位置

android - 在带 Remote 的 Android 电视中无法选择和单击动态 TextView

android - 如何在 android leanback 库中自定义行的标题项?

安卓电视 : How to customize left navigation panel of android TV using Leanbak?

Android Leanback 库 BrowseFragment

Android API 14 - 网络操作/AsyncTask

android - 尝试在 onDestoryView() 之外保留 fragment View 的引用时发生内存泄漏

android - 位图工厂内存不足

java - Android 电视 - 现在打牌图标

android - 在 Android TV 上将 ProgressBar 添加到 DetailsOverviewRow