我最近在我的应用程序中引入了多笔画手势。这是一个首选项,所以我在Activity.OnCreate中动态设置StrokeType。我发现如果你动态设置StrokeType,它会以下列方式改变GestureOverlayView的行为。
正常行为是您绘制一个手势,它在绘制后停留在屏幕上。但是,当您动态更改笔触类型时,在OnGestureEnded事件触发后,屏幕上绘制的任何手势都会立即消失。我重新加载了GesturesBuilder示例应用程序,如果添加此处显示的第二行,则确认它有同样的问题:
GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);
overlay.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_SINGLE);
overlay.addOnGestureListener(new GesturesProcessor());
}
这是Android手势库中的错误,是否有人知道解决方法?
请注意,这是在HTC Magic上,所以它也可能是手机问题。
答案 0 :(得分:1)
您可以在Gesture Overlay的XML文件中静态设置笔触类型。
<android.gesture.GestureOverlayView
android:id="@+id/gestures_alpha"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
android:gestureStrokeType="multiple"
android:fadeOffset="1000"
/>
手势消失很快,因为fadeOffset设置为较低的数字。如果您自己设置,如上所述,在手势消失之前需要花费一定的时间。经过这段时间后,将调用OnGestureEvent或OnGesturePerformedListener,具体取决于您使用的是哪一个。