概述
起因是老板觉得解锁操作不流畅,要改。当时看过之后发现是因为手指的滑动操作,特别是在慢速向上滑动时容易被误判为误触,导致解锁失败,因而被认为解锁不流畅。因为当时修改的代码已经找不到了,这里只根据记忆记录一下改动的大概位置,为自己日后查阅方便计,可能个别有误。
frameworksbasepackagesSystemUIsrccomandroidsystemuistatusbarphonePanelView.java
boolean expand = flingExpands(vel, vectorVel, x, y)
|| event.getActionMasked() == MotionEvent.ACTION_CANCEL
|| forceCancel;
flingExpands函数返回true就解锁失败,false才能解锁。
主要修改的位置就是在flingExpands函数
protected boolean flingExpands(float vel, float vectorVel, float x, float y) {
if (isFalseTouch(x, y)) {
return true;
}
if (Math.abs(vectorVel) < mFlingAnimationUtils.getMinVelocityPxPerSecond()) {
return getExpandedFraction() > 0.5f;
} else {
return vel > 0;
}
}
一开始准备在isFalseTouch函数加判断,使得滑动不容易被当作误触处理。
private boolean isFalseTouch(float x, float y) {
if (!mStatusBar.isFalsingThresholdNeeded()) {
return false;
}
if (mFalsingManager.isClassiferEnabled()) {
return mFalsingManager.isFalseTouch();
}
if (!mTouchAboveFalsingThreshold) {
return true;
}
if (mUpwardsWhenTresholdReached) {
return false;
}
return !isDirectionUpwards(x, y);
}
其中mFalsingManager.isClassiferEnabled()会调用
if (mFalsingManager.isClassiferEnabled()) {
return mFalsingManager.isFalseTouch();
}
public boolean isClassiferEnabled() {
return mHumanInteractionClassifier.isEnabled();
}
最后调用到
frameworksbasepackagesSystemUIsrccomandroidsystemuiclassifierHumanInteractionClassifier.java
public boolean isFalseTouch() {
if (mEnableClassifier) {
float evaluation = mHistoryEvaluator.getEvaluation();
boolean result = evaluation >= 5.0f;
if (FalsingLog.ENABLED) {
FalsingLog.i("isFalseTouch", new StringBuilder()
.append("eval=").append(evaluation).append(" result=")
.append(result ? 1 : 0).toString());
}
return result;
}
return false;
}
似乎修改HumanInteractionClassifier.java的isFalseTouch也可以。
但是当时发现其他地方也调用isFalseTouch函数,如果修改这个函数其他也会受影响,所以最后修改都在flingExpands函数
具体的修改已经找不到,大概是把 flingExpands函数开始处的
if (isFalseTouch(x, y)) {
return true;
}的判断,移到了if else分支里。让慢速滑动不容易被直接当作误触而导致flingExpands函数直接返回true,而是先执行
if (Math.abs(vectorVel) < mFlingAnimationUtils.getMinVelocityPxPerSecond())判断。
最后
以上就是矮小镜子为你收集整理的SystemUI KeyGuard之滑动解锁不流畅的全部内容,希望文章能够帮你解决SystemUI KeyGuard之滑动解锁不流畅所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复