我想为onClickListener Player API添加一个YouTube事件--我尝试了许多解决方案,但都没有工作
我的一些尝试
YouTubePlayerView youTubePlayerView = findViewById(R.id.youtubePlayer);
youTubePlayerView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d(TAG,"onClick");
}
}); YouTubePlayerView youTubePlayerView = findViewById(R.id.youtubePlayer);
youTubePlayerView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
Log.d(TAG,"onTouch");
return false;
}
});另外,我试图在YouTube player视图的上方添加一个布局,并使其透明,然后在此布局中添加一个单击监听器,但每次播放几秒钟后,播放机就会停止。
我的最后一次尝试是使用GestureDetector类,但也没有工作
提前谢谢你
发布于 2019-01-01 17:51:15
我试图在YouTube player视图的上方添加一个布局,并使其透明,然后在此布局中添加一个单击监听器,但播放机在几秒钟后停止。
YouTube Player API不允许上面的任何视图,无论它是可见的还是不可见的,并且将以ErrorReason结束。
它还会消耗任何和所有的触摸事件,而不共享它们。但是,您可以将父Override的dispatchTouchEvent(MotionEvent)方法转换为YouTubePlayerView,并窃取这些触摸事件来启动您自己的onClick()回调。
您需要做的是,首先在xml布局文件中创建一个容器,您可以在其中放置YouTubePlayerView。
youtube_player_view_layout.xml
<MyCustomFrameLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
<YouTubePlayerView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</YouTubePlayerView>
</MyCustomFrameLayout>必须在布局xml中添加带有完全限定名的MyCustomFrameLayout,即使用MyCustomFrameLayout
MyCustomFrameLayout.java
public class MyCustomFrameLayout extends FrameLayout {
private boolean actionDownReceived = false;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
actionDownReceived = true;
break;
}
case MotionEvent.ACTION_MOVE: {
// No longer a click, probably a gesture.
actionDownReceived = false;
break;
}
case MotionEvent.ACTION_UP: {
if (actionDownReceived) {
performClick();
}
break;
}
}
return super.dispatchTouchEvent(event);
}
}然后,您需要做的就是在MyCustomFrameLayout上设置单击侦听器。
免责声明:上面的代码没有在IDE中进行测试,如果按原样复制,很可能无法正确运行。然而,思想的本质在这里被恰当地投射出来。
https://stackoverflow.com/questions/53983004
复制相似问题