因为我的是左撇子,用左手玩手机居多,刷掘金的时候,由于掘金的侧滑退出的范围是在太大,我的手机x轴上触发范围超过200px,上下滑动详情界面,常常同时触发滑动回退,实讲,体验很是差。android
1.定位代码位置
掘金用了乐加固,直接用apktool没法解出来,脱壳之类的操做,我也还没接触过,因此这里直接在xposed上找了个直接能够更改应用为调试模式(android:debuggable="true")的插件,而后使用androidstudio自带的 Profiler的cup板块,录制一个执行(个人手机仍是7.0)bash
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