当触摸屏幕时如何在VideoSupportFragment上显示视频控件?

问题描述 投票:0回答:1

我正在使用带触摸屏的设备上的VideoSupportFragment库中的Leanback。我希望能够在触摸屏幕时显示视频控件,但是我不知道如何启用它。我可以加入一些触摸或单击侦听器吗?我尝试加入surfaceView,但没有得到该事件。

谢谢。

android android-tv leanback
1个回答
0
投票

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

这是假设您的活动扩展了FragmentActivity的后代AppCompatActivity。

所以在您的活动中-

@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 (event.getAction() == MotionEvent.ACTION_DOWN) {
        // You can choose to display the SurfaceView once screen is pressed before even waiting for it to be released
    }
    if (event.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 null for letting the system know you handled the event.
        return true;
    }

    // If the event didn't get handled return false
    return false;
}

请确保在处理事件后返回true,否则返回false。

© www.soinside.com 2019 - 2024. All rights reserved.