android-如何检测imageview上的双击并启动新片段

时间:2014-08-30 05:15:50

标签: android android-fragments imageview motionevent gesturedetector

我已经对该主题进行了大量搜索,甚至还提到了android开发者网站的官方文档。但仍然不清楚这个概念。

我已经读过,为了实现触摸手势,我需要使用GestureDetector和MotionEvent包。但它的实施让我对这些事情感到困惑。

我只想要的是,我的布局包括许多文本视图以及两个图像视图。我想检测我的图像上的双击并想要开始一个新的片段活动。在新的片段活动中,我希望在横向模式下以全屏显示相同的图像。

我已经完成了很多阅读,但它让我感到困惑。 请帮忙。 谢谢

1 个答案:

答案 0 :(得分:2)

这是Double Tap Gesture ImageView。

public class CustomImageView extends ImageView {
    private Context context;
    private GestureListener mGestureListener;
    private GestureDetector mGestureDetector;

    public CustomImageView(Context context) {
        super(context);
        sharedConstructing(context);
    }

    public CustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        sharedConstructing(context);
    }

    public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        sharedConstructing(context);
    }

    private void sharedConstructing(Context context) {
        super.setClickable(true);
        this.context = context;
        mGestureListener=new GestureListener();
        Log.e("Adding", "Listener:::");
        mGestureDetector = new GestureDetector(context, mGestureListener, null, true);
        setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                mGestureDetector.onTouchEvent(event);
                //..my other code logic
                invalidate();
                return true; // indicate event was handled
            }

        });
    }

    public class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDoubleTap( MotionEvent e ) {
            // TODO DoubleTap Comparison 
            Log.e("onDoubleTap","onDoubleTap");
            return true;
        }
    }

}

Reference Link