如何将onClick / onLongClick事件用于VideoView?

时间:2012-10-01 10:04:24

标签: android

我有一个VideoView,我想在fooMethod(VideoView vv)上调用一个方法,只要它被短接,但是如果它被长时间显示则显示/隐藏视频控件。但是,VideoView似乎没有OnClick或OnLongClick事件。

我已经实现了onTouchListener,但我似乎只能从中得到DOWN和UP事件;似乎没有支持检测点击的长度。

是否有一种很好的方法来区分onTouchListener中的长点击和短点击?

2 个答案:

答案 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中