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

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

问题描述

我曾尝试以下code区分单单击和双击。只需点击一下,就可以了。当我双击ImageView的,code之内的两次单单击和双击一部分来执行。

 私有静态最后长DOUBLE_ preSS_INTERVAL = 250; //在米利斯
    私人终于pressTime;
    布尔mHasDoubleClicked;img_feat_orgn_item.setOnClickListener(新OnClickListener(){
 @覆盖
    公共无效的onClick(视图v){
    // TODO自动生成方法存根
    findDoubleClick();
    }
    });私人布尔findDoubleClick(){
        //获取纳米秒当前时间。
    长pressTime = System.currentTimeMillis的();
        //如果双击...
        如果(pressTime - 最后pressTime< = DOUBLE_ preSS_INTERVAL){
            mHasDoubleClicked = TRUE;
            startActivity(新意图(
                    Wv_HomePage.this,
                    NewDonation.class));
            //双击事件....
        }其他{//如果不是双击....
            mHasDoubleClicked = FALSE;
            处理程序将myHandler =新的处理程序(){
                公共无效的handleMessage(消息m){
                    布尔mHasDoubleClicked = FALSE;
                    如果(!mHasDoubleClicked){
                        //单点击事件
                        feature_class_val = listData_Feature_Organization
                                获得(j)条;
                        意向意图=新意图(
                                Wv_HomePage.this,
                                OrganizationDetails.class);
                        束B =新包();
                        b.putString(orgn_name
                                feature_class_val.name);
                        intent.putExtras(二);
                        startActivity(意向);                    }
                }
            };
            消息m =新的Message();
            myHandler.sendMessageDelayed(男,DOUBLE_ preSS_INTERVAL);
        }
        最后pressTime = pressTime;
        返回mHasDoubleClicked;
    }


解决方案

只是一个小变化,我的code正常工作。我把mHasDoubleClicked布尔内部处理,这使得麻烦。下面code工作。

  img_feat_orgn_item.setOnClickListener(新OnClickListener(){
     @覆盖
        公共无效的onClick(视图v){
        // TODO自动生成方法存根
        findDoubleClick();
    如果(mHasDoubleClicked){
                        Log.v(双击,双击);
    startActivity(新意图(
                        Wv_HomePage.this,
                        NewDonation.class));
                    }
        }
        });    私人布尔findDoubleClick(){
            //获取纳米秒当前时间。
        长pressTime = System.currentTimeMillis的();
            //如果双击...
            如果(pressTime - 最后pressTime< = DOUBLE_ preSS_INTERVAL){
                mHasDoubleClicked = TRUE;                //双击事件....
            }其他{//如果不是双击....
                mHasDoubleClicked = FALSE;
                处理程序将myHandler =新的处理程序(){
                    公共无效的handleMessage(消息m){                        如果(!mHasDoubleClicked){
                            //单点击事件
                            feature_class_val = listData_Feature_Organization
                                    获得(j)条;
                            意向意图=新意图(
                                    Wv_HomePage.this,
                                    OrganizationDetails.class);
                            束B =新包();
                            b.putString(orgn_name
                                    feature_class_val.name);
                            intent.putExtras(二);
                            startActivity(意向);                        }
                    }
                };
                消息m =新的Message();
                myHandler.sendMessageDelayed(男,DOUBLE_ preSS_INTERVAL);
            }
            最后pressTime = pressTime;
            返回mHasDoubleClicked;
        }

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;
    }

解决方案

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天全站免登陆