2010-05-18 53 views
3

我最近在我的应用程序中引入了多笔手势。这是一个首选项,所以我在Activity.OnCreate中动态设置StrokeType。我发现的是,如果您动态设置StrokeType,它会按照以下方式更改GestureOverlayView的行为。为什么更改GestureOverlayView的StrokeType会影响视图的标准行为?

正常的行为是你绘制一个手势,并在绘制后保持在屏幕上。但是,当您动态更改笔触类型时,在OnGestureEnded事件触发后,屏幕上绘制的任何手势都会立即消失。我重装样品GesturesBuilder应用程序并确认它具有相同的问题,如果你添加此处显示的第二行:

GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay); 
    overlay.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_SINGLE); 
    overlay.addOnGestureListener(new GesturesProcessor()); 
} 

这是一个错误在Android的手势库,没有人知道一个解决方法吗?

请注意,这是在HTC Magic上,因此它也可能是手机问题。

回答

1

您可以在手势叠加层的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被调用,具体取决于您使用的是哪一个。

相关问题