2010-05-18 51 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被調用,具體取決於您使用的是哪一個。

相關問題