Android framework系统手势

it2022-05-05  126

本文章基于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);     }

 

 


最新回复(0)