我有一个VideoView,我想在fooMethod(VideoView vv)
上调用一个方法,只要它被短接,但是如果它被长时间显示则显示/隐藏视频控件。但是,VideoView似乎没有OnClick或OnLongClick事件。
我已经实现了onTouchListener,但我似乎只能从中得到DOWN和UP事件;似乎没有支持检测点击的长度。
是否有一种很好的方法来区分onTouchListener中的长点击和短点击?
答案 0 :(得分:1)
这有点老了,但是将来可能会遇到同样的问题。
好像VideoView会消耗onClick / onLongClick的其他功能(没有对其进行深入研究),因此另一种方法是使用GestureDetectorCompat(兼容,因此可以在较旧的版本上使用)手动完成。
GestureDetectorCompat
GestureDetectorCompat gestureDetectorCompat = new GestureDetectorCompat(context, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent motionEvent) {
/* Always return true, to indicate that the gestureDetectorCompat
* consumed the touch and can continue to the
* next gestures(long, single, etc..)
*/
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
Log.i("SOME_TAG", "Longpress detected");
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
});
您要实现onClick / onLongClick的视图。
查看
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// Return the result from GestureDetectorCompat so the view
// knows if the touch was consumes or not
return gestureDetectorCompat.onTouchEvent(motionEvent);
}
});
答案 1 :(得分:0)
尝试添加
<uses-features android:name="multi-touch" />
在你的Manifest.xml中