Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android中点击和点按的区别大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[GestureDetector.onGestureListener] [1]类的方法有[onSingleTapUp(MotionEvent)] [2]:

这种方法有相同的onclick功能?我可以使用此方法从onclick方法实现我想要的相同行为吗?

解决方法

做了一些测试,似乎答案是肯定的,你可以使用onSingleTapUp而不是onclick. onSingleTapUp方法可以很好地区分双击或长按的简单点击.我的测试:
public class MainFragmentScrollerController
{
    private MainFragment mFragment;
    private GestureDetectorCompat mGestureDetector;

    public MainFragmentScrollerController(MainFragment fragment)
    {
        mFragment = fragment;
        mGestureDetector = new GestureDetectorCompat(mFragment.getActivity(),new GestureListener());
    }

    public void setGestureListener()
    {
        mFragment.myView.setOnTouchListener(new OnTouchListener()
        {
            @Override
            public Boolean onTouch(View v,MotionEvent event)
            {
                Boolean gestureResult = mGestureDetector.onTouchEvent(event);
                Log.i("GestureListener","gestureResult = " + gestureResult);
                return gestureResult;
            }
        });
    }

    public class GestureListener extends SimpLeonGestureListener
    {
        private final String TAG = "GestureListener";
        @Override
        public Boolean onDown(MotionEvent event)
        {
            Log.d(tag,"onDown: " + event.toString()); 
            return true;
        }

        @Override
        public Boolean onFling(MotionEvent event1,MotionEvent event2,float veLocityX,float veLocityY)
        {
            Log.d(tag,"onFling: " + event1.toString()+event2.toString());
            return true;
        }

        @Override
        public Boolean onScroll(MotionEvent event1,float distanceX,float distanceY)
        {
            Log.d(tag,"onScroll: " + event1.toString()+event2.toString());
            return true;
        }

        @Override
        public Boolean onSingleTapUp(MotionEvent event)
        {
            Log.d(tag,"onSingleTapUp: " + event.toString());
            return true;
        }

        @Override
        public void onLongPress(MotionEvent event)
        {
            Log.d(tag,"onLongPress: " + event.toString());
        }
    }
}

简单点击的结果:

09-04 14:20:58.040: D/GestureListener(17689): onDown: MotionEvent { action=ACTION_DOWN,id[0]=0,x[0]=188.71875,y[0]=26.0625,toolType[0]=TOOL_TYPE_FINGER,buttonState=0,MetaState=0,flags=0x0,edgeFlags=0x0,pointerCount=1,historySize=0,eventTime=34463725,downTime=34463725,deviceid=1,source=0x1002 }
09-04 14:20:58.040: I/GestureListener(17689): gestureResult = true
09-04 14:20:58.100: I/GestureListener(17689): gestureResult = false
09-04 14:20:58.130: D/GestureListener(17689): onSingleTapUp: MotionEvent { action=ACTION_UP,eventTime=34463811,source=0x1002 }
09-04 14:20:58.130: I/GestureListener(17689): gestureResult = true

长按结果:

09-04 14:22:12.520: D/GestureListener(17689): onDown: MotionEvent { action=ACTION_DOWN,x[0]=179.22656,y[0]=41.0625,eventTime=34538199,downTime=34538199,source=0x1002 }
09-04 14:22:12.520: I/GestureListener(17689): gestureResult = true
09-04 14:22:12.560: I/GestureListener(17689): gestureResult = false
09-04 14:22:12.930: I/GestureListener(17689): gestureResult = false
09-04 14:22:12.950: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.010: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.100: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.130: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.150: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.180: I/GestureListener(17689): gestureResult = false
09-04 14:22:13.200: D/GestureListener(17689): onLongPress: MotionEvent { action=ACTION_DOWN,source=0x1002 }
09-04 14:22:13.230: I/GestureListener(17689): gestureResult = false

投掷结果:

09-04 14:24:09.650: D/GestureListener(17689): onDown: MotionEvent { action=ACTION_DOWN,x[0]=332.15625,y[0]=2.625,eventTime=34655337,downTime=34655337,source=0x1002 }
09-04 14:24:09.650: I/GestureListener(17689): gestureResult = true
09-04 14:24:09.690: D/GestureListener(17689): onScroll: MotionEvent { action=ACTION_DOWN,source=0x1002 }MotionEvent { action=ACTION_MOVE,x[0]=331.9604,y[0]=-72.36835,historySize=2,eventTime=34655368,source=0x1002 }
09-04 14:24:09.690: I/GestureListener(17689): gestureResult = true
09-04 14:24:09.710: D/GestureListener(17689): onScroll: MotionEvent { action=ACTION_DOWN,x[0]=337.91425,y[0]=-124.40411,eventTime=34655385,source=0x1002 }
09-04 14:24:09.710: I/GestureListener(17689): gestureResult = true
09-04 14:24:09.730: D/GestureListener(17689): onFling: MotionEvent { action=ACTION_DOWN,source=0x1002 }MotionEvent { action=ACTION_UP,eventTime=34655414,source=0x1002 }
09-04 14:24:09.730: I/GestureListener(17689): gestureResult = true

大佬总结

以上是大佬教程为你收集整理的Android中点击和点按的区别全部内容,希望文章能够帮你解决Android中点击和点按的区别所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。