Почему изменение StrokeType для GestureOverlayView влияет на стандартное поведение представления? - PullRequest
3 голосов
/ 18 мая 2010

Я недавно ввел в свое приложение многоходовые жесты. Это предпочтение, поэтому я установил StrokeType динамически в Activity.OnCreate. Я обнаружил, что если динамически установить 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, поэтому это также может быть проблема с телефоном.

1 Ответ

1 голос
/ 07 мая 2011

Вы можете установить тип обводки статически в XML-файле Gesture Overlay.

<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 в зависимости от того, какой из них вы используете.

...