美文网首页
Android的单击双击事件

Android的单击双击事件

作者: 木叶纷飞 | 来源:发表于2018-08-02 10:21 被阅读0次

    package com.dianchou.dcw.view.main.point;

    import android.os.Handler;

    import android.view.MotionEvent;

    import android.view.View;

    /**

    * 创建者    yf

    * 创建时间  2018/8/28 17:12

    * 描述       ${TODO}

    */

    public class SingleDoubleClickListener implements View.OnTouchListener {

        //双击间四百毫秒延时

        private static int timeout = 400;

        //记录连续点击次数

        private int clickCount = 0;

        private Handler handler;

        private MyClickCallBack myClickCallBack;

        public interface MyClickCallBack {

            void oneClick();//点击一次的回调

            void doubleClick();//连续点击两次的回调

        }

        public SingleDoubleClickListener(MyClickCallBack myClickCallBack) {

            this.myClickCallBack = myClickCallBack;

            handler = new Handler();

        }

        @Override

        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {

                clickCount++;

                handler.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        if (clickCount == 1) {

                            myClickCallBack.oneClick();

                        } else if (clickCount == 2) {

                            myClickCallBack.doubleClick();

                        }

                        handler.removeCallbacksAndMessages(null);

                        //清空handler延时,并防内存泄漏

                        //计数清零

                        clickCount = 0;

                    }

                    //延时timeout后执行run方法中的代码

                }, timeout);

            }

            //让点击事件继续传播,方便再给View添加其他事件监听

            return true;

        }

    }

    使用举例:

    View button= findViewById(R.id.button);

    view.setOnTouchListener(new MyClickListener

    (new MyClickListener.MyClickCallBack() {

                @Override

                public void oneClick() {

                    Toast.makeText(MainActivity.this, "单击",

                    Toast.LENGTH_SHORT).show();

                }

                @Override

                public void doubleClick() {

                    Toast.makeText(MainActivity.this, "双击",

                    Toast.LENGTH_SHORT).show();

                }

            }));

    相关文章

      网友评论

          本文标题:Android的单击双击事件

          本文链接:https://www.haomeiwen.com/subject/amljvftx.html