手机移动程序开发android开发遇到的坑Android知识点和文章分享

【坑】自定义View时重写OnTouchEvent出现perfo

2018-02-23  本文已影响27人  Xdjm

出现在Android Studio3.1中,对View的自定义时,重写onTouchEvent方法时会报warn

顽皮不过lint

If a View that overrides onTouchEvent or uses an OnTouchListener does not also implement performClick and call it when clicks are detected, the View may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in View#performClick as some accessibility services invoke performClick when a click action should occur.

如果一个覆盖了onTouchEvent方法或者使用了OnTouchListener的控件没有引用performClick并且调用它的点击事件被拦截,控件可能不能合适的处理访问操作。逻辑上来讲处理点击操作应该更合理的被放置在View#performClick中,这样当点击事件发生时一些访问性操作可以成功请求调用performClick。

  1. 先加上这句
@Override
  public boolean performClick() {
  return super.performClick();
}
  1. 以及修改一下onTouch的逻辑
@Override
  public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    performClick();
                    break;
                case MotionEvent.ACTION_UP:
                case MotionEvent.ACTION_CANCEL:
                    break;
                    default;
         }
            //这里放原先在onTouchEvent里的代码
        return true;
  }

K.O. for ever!

上一篇 下一篇

猜你喜欢

热点阅读