Можно ли определить, когда анимация выделения TextView завершена? - PullRequest
1 голос
/ 25 января 2012

Если я установлю значение ellipsize TextView на "marquee" и значение marqueeRepeatLimit на "1", например (для того, чтобы один раз пролистать длинный текст через TextView), есть ли способ определить, когда шатер анимации завершен?

(Дело в том, что у меня есть очередь строк, которая динамически добавляется, и я хочу вытащить и показать одну из этих строк за раз. Строка может быть длиннее ширины TextView, поэтому я хочу переверните его, прежде чем я покажу следующий.)

Редактировать: Если это невозможно сделать с помощью свойств выделения TextView, кто-нибудь знает, как добавить анимацию в TextView, которая имитирует анимацию выделения?

Ответы [ 2 ]

1 голос
/ 25 января 2012

вместо выделения просто попробуйте выполнить простую анимацию текста, там вы можете определить, в каком стиле должен перемещаться текст, с какой скоростью и направлением.
Вы можете настроить отображение результата после завершения анимации, используя " setFillAfter () "метод (показывает текст по умолчанию в вашем случае).

0 голосов
/ 27 января 2012

Насколько я могу судить, невозможно определить, когда анимация выделения завершается, и даже если бы я реплицировал анимацию выделения, используя анимацию перевода в TextView, было бы не просто установить длительностьправильный отрезок времени в соответствии с текстом в TextView.Так!Вместо этого я сейчас использую TextSwitcher следующим образом ...

<TextSwitcher
    android:id="@+id/myTextSwitcher"
    ...
    android:inAnimation="@anim/fade_in_slow"
    android:outAnimation="@anim/fade_out_slow" >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:focusableInTouchMode="true" />
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:focusableInTouchMode="true" />

... и периодически вызываю метод myTextSwitcher.setText("text to show next"), используя Timer.Не идеал, но лучшее, что я мог придумать!

...