要实现 Android 双击 功能,我们可通过记录两次点击时间,用两次点击时间间隔来判断实现双击功能。也可以通过手势 GestureDectector 的监听 实现双击功能。
如下代码所示,创建 GestureDetector 同时注册 SimpleOnGestureListener 手势监听,实现长按(onLongPress)和双击(onDoubleTap)回调方法。为 view 设置触摸监听 OnTouchListener,在onTouch 方法中调用gestureDetector.onTouchEvent(event) ,检测手势。逻辑处理实现长按后再双击切换网络环境的功能。

    /**     * 环境切换逻辑。长按后再双击,唤出环境切换菜单。     * @param activity_login_logo 登陆logo     */    @SuppressLint("ClickableViewAccessibility")    private void envirSwitchLogic(final ImageView activity_login_logo) {        final GestureDetector gestureDetector = new GestureDetector(LoginActivity.this, new GestureDetector.SimpleOnGestureListener() {            int checkedItem = 2;            @Override            public void onLongPress(MotionEvent e) {                super.onLongPress(e);                    activity_login_logo.setTag("longClicked");            }            @Override            public boolean onDoubleTap(MotionEvent e) {                if ("longClicked".equals(activity_login_logo.getTag())) {                    for (int i = 0; i < UrlConfig.ENVIR_ARR.length; i++) {                        if (UrlConfig.ENVIR_ARR[i] == UrlConfig.ENVIR) {                            checkedItem = i;                            break;                        }                    }                    //长按后再双击,唤出环境切换菜单                    new AlertDialog.Builder(LoginActivity.this)                            .setTitle("环境切换")                            .setSingleChoiceItems(                                    new String[]{"测试环境(beta)", "Staging环境(staging)", "正式环境(release)", "本地环境(local)"},                                    checkedItem, new DialogInterface.OnClickListener(){                                        @Override                                        public void onClick(DialogInterface dialog, int which) {                                            checkedItem = which;                                            int envir = UrlConfig.ENVIR_ARR[which];                                            UrlConfig.switchEnvir(envir);                                            xml.setInt(AppConstants.SP.ENVIR_CODE, envir);//保存本次操作,再次进入应用,在Application中取出。                                            dialog.dismiss();                                        }                                    }                            ).show();                    activity_login_logo.setTag(null);                }                return false;            }        });        activity_login_logo.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                gestureDetector.onTouchEvent(event);                return true;            }        });    }

更多相关文章

  1. Android(安卓)| 如何给Fragment里的button添加监听事件
  2. (转载)Android平台,jni调用原始C运态库技术总揽
  3. 【Android(安卓)UI】案例03滑动切换效果的实现(ViewPager)
  4. Android应用集成开发环境,强烈推荐使用
  5. Android(安卓)对手机网络的检测和监听
  6. Android的ListView简单使用的实例(附Demo)
  7. Android(安卓)PopupWindow 仿微信弹出效果
  8. Android(安卓)解决输入法遮挡布局控件的问题
  9. [置顶] Android(安卓)UI设计之RecyclerView

随机推荐

  1. Android实现微信右上角弹出的菜单
  2. Android底部导航 BottomNavigationBar(Goo
  3. Android(安卓)获取手机号码
  4. Android(安卓)frameworks添加资源后编译
  5. Android(安卓)Activity的启动过程(API27
  6. Android获取Manifest中元素的值
  7. android服务和进程详解
  8. android中ListView的使用
  9. mono for android 学习记录
  10. Android拖动相片特效