Android TextView Marquee: Как управлять скоростью прокрутки? Альтернативная резка текста объектаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android TextView Marquee: Как управлять скоростью прокрутки? Альтернативная резка текста объекта

Сообщение Anonymous »

Я строю приложение для отображения текста, которое требует горизонтального текста прокрутки с управляемой скоростью. Я потратил время на то, чтобы пробовать разные подходы, но у меня были проблемы с обоими. Marquee < /p>
Это работает отлично, за исключением того, что я не могу контролировать скорость: < /p>
private void setupScrollingText(TextView textView) {
textView.setSingleLine(true);
textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
textView.setMarqueeRepeatLimit(-1);
textView.setSelected(true);
textView.setHorizontallyScrolling(true);

textView.post(() -> {
int availableHeight = textView.getHeight() -
textView.getPaddingTop() - textView.getPaddingBottom();
float optimalSize = availableHeight * 0.8f;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, optimalSize);
});
}
< /code>
Я попробовал: < /p>

Чтобы изменить mmarquee.mpixelspersecond /mscrollunit < /li>
Модификация Duration < /li>
< /ul>
Подход 2: объект. ObjectAnimator вырезает текст, который прокручивается последней буквой в отрезанном тексте, часто отображается только частично: < /p>
private void setupScrollingText(TextView textView) {
textView.setSingleLine(true);

textView.post(() -> {
textView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
float textWidth = textView.getMeasuredWidth();
int containerWidth = root.getWidth() - root.getPaddingLeft() - root.getPaddingRight();

if (textWidth > containerWidth) {
long duration = calculateDurationFromSpeed(textWidth, scrollSpeed);
ObjectAnimator animator = ObjectAnimator.ofFloat(textView, "translationX",
containerWidth, -textWidth);
animator.setDuration(duration);
animator.setRepeatCount(ObjectAnimator.INFINITE);
animator.setInterpolator(new LinearInterpolator());
animator.start();
}
});
}
< /code>
Отрезание текста происходит независимо от параметров макета match_parent, wrap_content. < /p>
xml: < /p>






< /code>

Как я могу контролировать нативную скорость шатра? Существует ли рабочий метод для Android API 21+, который фактически меняет скорость прокрутки? В чем проблема, которая вызывает отрезанные буквы в свитке? < /Li>
Альтернативные подходы? Если два, которые я пытался реализовать, невозможно < /li>
< /ul>
Подход нативного шатра работает для дисплея, но не имеет управления скоростью. Подход ObjectAnimator дает управление скоростью, но разбивает текст, не отображает полный текст.

Подробнее здесь: https://stackoverflow.com/questions/796 ... alternativ
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»