我开始尝试使用自定义手势和GestureOverlayView,并注意到一些变量,我不确定它们的用途以及可以和应该分配的值的范围,文档似乎有些模糊:
//Minimum curve angle a stroke must contain before it is recognized as a gesture.
android:gestureStrokeAngleThreshold
我认为这是度数,当我添加" 25"在这里,手势中必须包含锋利的边缘,但实际上,如果我绘制圆形或完美的正方形,它仍会被检测到。
//Minimum length of a stroke before it is recognized as a gesture.
android:gestureStrokeLengthThreshold
这是dp吗?因为它似乎在较小的屏幕上触发手势更难......
//Squareness threshold of a stroke before it is recognized as a gesture.
android:gestureStrokeSquarenessThreshold
这是什么?
修改
好的,我刚刚意识到每个预测都有一个分数值,应该用它来确定所执行的手势是否真的满足要求,所以我添加了一个检查预测的分数是否大于1。 / p>
我仍然很好奇GestureOverlayView中的那些变量正在做什么,所以开导我:)
答案 0 :(得分:0)
gestureStrokeLengthThreshold肯定不是密度独立的,但显然使用像素。如果要设置与密度无关的阈值,可以在运行时计算gestureStrokeLengthThreshold,如下所示:
DisplayMetrics metrics = getResources().getDisplayMetrics();
float normalizedScreenSize = (metrics.heightPixels + metrics.widthPixels) / 2.0f;
return normalizedScreenSize * GESTURE_LENGTH_THRESHOLD;
GESTURE_LENGTH_THRESHOLD将是表示手势应该有多长的值。值1.0大致是屏幕的大小(从屏幕宽度和高度平均)
我仍然对GestureOverlayView中的其他变量感兴趣,所以如果你知道更多 - 启发我:)