使用xposed更改掘金的側滑退出的觸發範圍(左撇子,掘金的這個側滑退出的體驗一言難盡)

原因

因爲我的是左撇子,用左手玩手機居多,刷掘金的時候,由於掘金的側滑退出的範圍是在太大,我的手機x軸上觸發範圍超過200px,上下滑動詳情界面,常常同時觸發滑動回退,實講,體驗很是差。android

操做

1.定位代碼位置

掘金用了樂加固,直接用apktool沒法解出來,脫殼之類的操做,我也還沒接觸過,因此這裏直接在xposed上找了個直接能夠更改應用爲調試模式(android:debuggable="true")的插件,而後使用androidstudio自帶的 Profiler的cup板塊,錄製一個執行(個人手機仍是7.0)bash

搜索事件相關的幾個方法,由於這個滑動事件是在onTouchEvent中處理的,因此咱們能夠經過onInterceptTouchEvent來控制攔截(若是用dispatchTouchEvent來處理滑動事件,就不太好弄了~)

2.xposed 大法

Class c = XposedHelpers.findClass("im.juejin.android.base.views.swipebacklayout.SwipeBackLayout"
                , lpparam.classLoader);
        XposedHelpers.findAndHookMethod(c, "onInterceptTouchEvent",
            MotionEvent.class
            , new XC_MethodHook() {
              @Override
              protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
              }

              @Override
              protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                if (param != null && param.args[0] instanceof MotionEvent) {
                  // 獲取onInterceptTouchEvent的參數
                  MotionEvent me = (MotionEvent) param.args[0];
                  // thisObject就是SwipeBackLayout也就是View,因此這裏直接經過getContext獲取context
                  Context context = ((View) param.thisObject).getContext();

                  if (me.getX() < ViewConfiguration.get(context).getScaledEdgeSlop()) {
                    super.afterHookedMethod(param);
                    return;
                  }
                }
                param.setResult(false);
            })    

複製代碼

經過以上代碼也就簡單的實現縮小側滑觸發範圍的功能。ide

終語

其實也向掘金提出過這個側滑的問題,固然到目前爲止的版本都沒有調整,這裏操做只是爲了方便我的的使用。ui

相關文章
相關標籤/搜索