区分android中imageView的单击和双击 [英] Differentiate Single click and double click of a imageView in android

查看:20
本文介绍了区分android中imageView的单击和双击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了以下代码来区分单击和双击.单击一下就可以了.当我双击图像视图时,单击和双击部分内的代码都会执行.

I have tried the following code to differentiate single click and double click. Single click is ok. When I double click the imageview, code inside both the single click and double click part execute.

private static final long DOUBLE_PRESS_INTERVAL = 250; // in millis
    private long lastPressTime;
    boolean mHasDoubleClicked;

img_feat_orgn_item.setOnClickListener(new OnClickListener() {
 @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    findDoubleClick();
    }
    });

private boolean findDoubleClick() {
        // Get current time in nano seconds.
    long pressTime = System.currentTimeMillis();
        // If double click...
        if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
            mHasDoubleClicked = true;           
            startActivity(new Intent(
                    Wv_HomePage.this,
                    NewDonation.class));
            // double click event....
        } else { // If not double click....
            mHasDoubleClicked = false;
            Handler myHandler = new Handler() {
                public void handleMessage(Message m) {
                    boolean mHasDoubleClicked = false;
                    if (!mHasDoubleClicked) {
                        // single click event
                        feature_class_val = listData_Feature_Organization
                                .get(j);
                        Intent intent = new Intent(
                                Wv_HomePage.this,
                                OrganizationDetails.class);
                        Bundle b = new Bundle();
                        b.putString("orgn_name",
                                feature_class_val.name);
                        intent.putExtras(b);
                        startActivity(intent);

                    }
                }
            };
            Message m = new Message();
            myHandler.sendMessageDelayed(m, DOUBLE_PRESS_INTERVAL);
        }
        lastPressTime = pressTime;
        return mHasDoubleClicked;
    }

推荐答案

只需稍作改动,我的代码就可以正常工作.我将 mHasDoubleClicked 布尔值放置在处理程序中,这很麻烦.下面的代码有效.

just a little change and my code works fine. I placed the mHasDoubleClicked boolean inside handler, that makes the trouble. The below code works.

img_feat_orgn_item.setOnClickListener(new OnClickListener() {
     @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
        findDoubleClick();
    if (mHasDoubleClicked) {
                        Log.v("double click","double click");
    startActivity(new Intent(
                        Wv_HomePage.this,
                        NewDonation.class));
                    }
        }
        });

    private boolean findDoubleClick() {
            // Get current time in nano seconds.
        long pressTime = System.currentTimeMillis();
            // If double click...
            if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
                mHasDoubleClicked = true;           

                // double click event....
            } else { // If not double click....
                mHasDoubleClicked = false;
                Handler myHandler = new Handler() {
                    public void handleMessage(Message m) {

                        if (!mHasDoubleClicked) {
                            // single click event
                            feature_class_val = listData_Feature_Organization
                                    .get(j);
                            Intent intent = new Intent(
                                    Wv_HomePage.this,
                                    OrganizationDetails.class);
                            Bundle b = new Bundle();
                            b.putString("orgn_name",
                                    feature_class_val.name);
                            intent.putExtras(b);
                            startActivity(intent);

                        }
                    }
                };
                Message m = new Message();
                myHandler.sendMessageDelayed(m, DOUBLE_PRESS_INTERVAL);
            }
            lastPressTime = pressTime;
            return mHasDoubleClicked;
        }

这篇关于区分android中imageView的单击和双击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆