本文章基于Android 7.1源代码

frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java

frameworks\base\services\core\java\com\android\server\policy\SystemGesturesPointerEventListener.java

PhoneWindowManager在init的时候会监听系统手势:

     mSystemGestures = new SystemGesturesPointerEventListener(context,
                new SystemGesturesPointerEventListener.Callbacks() {
                    @Override
                    public void onSwipeFromTop() {
                        if (mStatusBar != null) {
                            requestTransientBars(mStatusBar);
                        }
                    }
                    @Override
                    public void onSwipeFromBottom() {
                        if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_BOTTOM) {
                            requestTransientBars(mNavigationBar);
                        }
                    }
                    @Override
                    public void onSwipeFromRight() {
                        if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_RIGHT) {
                            requestTransientBars(mNavigationBar);
                        }
                    }
                    @Override
                    public void onSwipeFromLeft() {
                        if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_LEFT) {
                            requestTransientBars(mNavigationBar);
                        }
                    }
                    @Override
                    public void onFling(int duration) {
                        if (mPowerManagerInternal != null) {
                            mPowerManagerInternal.powerHint(
                                    PowerManagerInternal.POWER_HINT_INTERACTION, duration);
                        }
                    }
                    @Override
                    public void onDebug() {
                        // no-op
                    }
                    @Override
                    public void onDown() {
                        mOrientationListener.onTouchStart();
                    }
                    @Override
                    public void onUpOrCancel() {
                        mOrientationListener.onTouchEnd();
                    }
                    @Override
                    public void onMouseHoverAtTop() {
                        mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
                        Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);
                        msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS;
                        mHandler.sendMessageDelayed(msg, 500);
                    }
                    @Override
                    public void onMouseHoverAtBottom() {
                        mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
                        Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);
                        msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION;
                        mHandler.sendMessageDelayed(msg, 500);
                    }
                    @Override
                    public void onMouseLeaveFromEdge() {
                        mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
                    }
                });

  手势感应区域修改在SystemGesturesPointerEventListener中

修改一下两个参数即可

   mSwipeStartThreshold : 手势最大起始位置

  mSwipeDistanceThreshold : 手势滑动最小位置

 

public SystemGesturesPointerEventListener(Context context, Callbacks callbacks) {
        mContext = context;
        mCallbacks = checkNull("callbacks", callbacks);
        mSwipeStartThreshold = checkNull("context", context).getResources()
                .getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
        mSwipeDistanceThreshold = mSwipeStartThreshold;
        if (DEBUG) Slog.d(TAG,  "mSwipeStartThreshold=" + mSwipeStartThreshold
                + " mSwipeDistanceThreshold=" + mSwipeDistanceThreshold);
    }

 

 

更多相关文章

  1. android GestureDetector 基于webview的手势滑动实现
  2. Android 自定义View之手势解锁控件
  3. editView多行光标位置问题和联系人问题
  4. Android点击事件之后跳到界面指定位置
  5. Android下图片或按钮等可拖动到任意位置的效果实现源码
  6. Android 手势识别判断,GestureDetector封装
  7. 【Android】Android apk默认安装位置设置
  8. 【Android每周专题】触摸屏手势
  9. 二、android百度地图定位显示当前位置(android百度地图SDK系列)

随机推荐

  1. Android(安卓)知识体系学习目录
  2. Android(安卓)SDK离线安装方法详解(加速
  3. Android(安卓)Handler.removeMessage移除
  4. Android(安卓)WifiManager 中的常量
  5. android 用canvas.clipPath 画不规则的Bi
  6. Android(安卓)Studio 安装教程(Windows)(
  7. android开源项目学习
  8. Android(安卓)如何避免运行时奔溃
  9. Android在任意位置获取应用程序Context
  10. Android(安卓)之 自定义标签 和 自定义组