Android YouTube Player API Fragment无法手动处理触摸事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android YouTube Player API Fragment无法手动处理触摸事件相关的知识,希望对你有一定的参考价值。
我正在使用[YouTubePlayerFragment][1]
将嵌入式youtube视频功能添加到android应用程序中。使用片段显示视频预览(缩略图),片段是回收者视图的单元格的一部分。点击单元格应该激活视频播放(任何地方,不仅是片段),它工作得很好并激活视频播放。不幸的是,片段本身拦截了所有触摸,并且不允许我在片段点击上激活视频。
我试图添加到细胞根android:clickable="true"
并设置一个触摸监听器 - 事件不会来。
我还试图在片段视图(fragment.View.setOnTouchListener
)上设置触摸监听器 - 同样的效果,事件不会来。
如何拦截片段点击并执行我的自定义代码?
附:我已经尝试过YouTubeThumbnailView
并且它对我不起作用,因为播放视频的唯一机会是使用YouTubeStandalonePlayer
和intent,它激活新活动,同时我想在没有上下文切换的情况下保持当前活动。
我可以通过将YouTubePlayerFragment放在自定义LinearLayout中来实现它:
public class TouchEventLayout extends LinearLayout {
public TouchEventLayout(Context context) {
super(context);
}
public TouchEventLayout(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
}
我知道这个问题很老了,但我遇到了同样的问题。
解决方案是将YouTubePlayerFragment
放在自定义布局(从LinearLayout
派生)中并覆盖其onInterceptTouchEvent
方法:
@Override
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {
final int action = motionEvent.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// on touch started
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// on touch finished/cancelled
break;
case MotionEvent.ACTION_MOVE:
// on touch moved
break;
}
return false;
}
以上是关于Android YouTube Player API Fragment无法手动处理触摸事件的主要内容,如果未能解决你的问题,请参考以下文章
膨胀类 com.google.android.youtube.player.YouTubePlayerView 时出错
com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart 处的 NullPointerException(未知来源)
无法使用 YouTube Android Player API 播放某些 Youtube 视频
Activity 泄露了原本绑定在这里的 ServiceConnection com.google.android.youtube.player
Activity 泄露了原本绑定在这里的 ServiceConnection com.google.android.youtube.player
YouTube Android Player API 在解组时抛出“BadParcelableException ClassNotFoundException:asc”与新的 YouTube 版本