Если я установил значение ellipsize
TextView в значение "marquee"
и значение marqueeRepeatLimit
равным "1"
(для того, чтобы развернуть длинный текст через один раз TextView), есть ли способ обнаружить, когда анимация marqueeRepeatLimit
?
(Thing is, у меня есть очередь строк, которая добавляется динамически, и я хочу вытащить и показать одну из этих строк за раз. Строка может быть длиннее ширины TextView, поэтому я хочу перевернуть ее прежде чем я покажу следующий.)
Изменить: если это невозможно сделать, используя свойства выделения TextView, кто-нибудь знает, как я могу добавить анимацию в TextView, который имитирует анимацию marquee?
Насколько я могу судить, невозможно обнаружить, когда анимация marquee завершена, и даже если я реплицирую анимацию marquee с помощью анимации трансляции в 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")
так часто, используя таймер. Не идеальное, но лучшее, что я мог придумать!
вместо шага просто попробуйте простую анимацию в тексте, там вы можете определить, в каком стиле текст должен двигаться, с какой скоростью и направлением.
Вы можете установить результат, который будет показан после завершения анимации, с помощью метода setFillAfter() (показывая текст по умолчанию в вашем случае).