zoukankan      html  css  js  c++  java
  • Android 和iOS中 Gesture 和 Touch

    先谈谈在开发中遇到的手势问题:

    今天在开发android程序时,在 View.OnTouchListener 的 onTouch(View view, MotionEvent motionEvent) 方法中建立GestureDetector 和 相应的 GestureDetector.OnGestureListener,目的是在 GestureDetector.OnGestureListener 的 onLongPress 方法中移动 onTouch 参数中的view。但是发现这种方法根本不好使,表现为:单击就调用了onLongPress方法,而对 onSingleTapConfirmed 方法更是毫无反应,也就是GestureDetector 无法正确监听手势了。后来把GestureDetector放在类中,在初始化时就建立,解决了问题。由此看出,GestureDetector 应该也是通过监听onTouchEvent 来进行手势判断的。如果每次发生onTouchEvent就建立GestureDetector,跟本达不到手势监听的效果!因为多个相关的连续onTouchEvent才能构成一个gesture,也才能被GestureDetector识别,有一个onTouchEvent就建立GestureDetector去判断,根本不能判断出什么。

    现在想想,iOS中的UIGestureRecoganizer 也从没有在 touchBegin 中创建过啊!道理应该是一样的!


    在ios中,一个UIGestureRecognizer识别一种手势,创建了gesture后,对应的响应函数也一起确定了,之后需要用UIView的方法addGestureRecognizer把gesture加到相应的view上。

    在android中,把view和GestureDetector的关系弱化了,view中没有addGestureRecognizer之类的函数,一个view想添加手势,就需要在view 的onTouch 函数中把event交给响应的GestureDetector实例,例如以下代码:

     public boolean onTouch(View v, MotionEvent event)  
        {  
            // TODO Auto-generated method stub  
            return mGesture.onTouchEvent(event);  
        }  
  • 相关阅读:
    SVN如何切换用户对代码进行操作
    SVN更新的时候报断言失败解决办法
    根据身份证号判断性别
    4.UiCollection API 详细介绍
    1.UiDevice API 详细介绍
    安卓常见反破解方式
    腾讯应用加固的脱壳分析和修复
    1.Android JUnit Runner(使用AndroidStudio)
    Java图形化界面设计——布局管理器之null布局(空布局)
    Java图形化界面设计——布局管理器之CardLayout(卡片布局)
  • 原文地址:https://www.cnblogs.com/breezemist/p/3383284.html
Copyright © 2011-2022 走看看