Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
 Аватар для Ringov
2 / 2 / 0
Регистрация: 07.03.2015
Сообщений: 4

Анимация печатания текста в TextView

07.03.2015, 13:58. Показов 7040. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех.

Сразу покажу, чего хочу добиться (черные косяки вокруг букв в планы не входят ).
Кликните здесь для просмотра всего текста


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

Пробовал разные варианты, но ни один не подошел, а своих знаний не хватает на реализацию чего-то подобного.
Лучше всего справляется Timer, но я так и не придумал, как реализовать рандомные интервалы (подозреваю что таймер по своей сути на такое не способен).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2015, 13:58
Ответы с готовыми решениями:

Анимация textview
Нашёл на форуме код, но что то пошло не так :) Анимация текста. Как будто кто то печатает текст. Может посмотрите что не так? ...

Анимация счетчика (TextView) от 0 до 1000?
Здравствуйте, всем. Подскажите, пожалуйста, как сделать анимацию значения счетчика от 0 до 1000, например, за 1 секунду? Возможно я...

Симуляция печатания текста
Добрый день! Была задачка написать скрипт симуляции набора текста в браузере. Вернее заказчик попросил. Хотел спросить мнение у вас...

5
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.03.2015, 15:44
Лучший ответ Сообщение было отмечено Ringov как решение

Решение

Ringov, наверн как-то так


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class DelayedPrinter {
 
    public static void printText(final Word word, final TextView textView) {
        Random random = new Random(System.currentTimeMillis());
 
        int currentRandOffset = random.nextInt(word.offset);
        boolean addOrSubtract = random.nextBoolean();
        long finalDelay = addOrSubtract ? word.delayBetweenSymbols + currentRandOffset : word.delayBetweenSymbols - currentRandOffset;
        if (finalDelay < 0) finalDelay = 0;
 
        textView.postDelayed(new Runnable() {
            @Override
            public void run() {
                String charAt = String.valueOf(word.word.charAt(word.currentCharacterIndex));
                ++word.currentCharacterIndex;
                textView.setText(textView.getText() + charAt);
                if (word.currentCharacterIndex >= word.word.length()) return;
                printText(word, textView);
            }
        }, finalDelay);
    }
 
 
    public static class Word {
 
        private long delayBetweenSymbols;
        private String word;
        private int offset;
        private int currentCharacterIndex;
 
        public Word(long delayBetweenSymbols, String word) {
            if (delayBetweenSymbols < 0) throw new IllegalArgumentException("Delay can't be < 0");
            this.delayBetweenSymbols = delayBetweenSymbols;
            this.word = word;
        }
 
        public void setOffset(int offset) {
            this.offset = offset;
        }
    }
 
}
и вот вызов

Java
1
2
3
DelayedPrinter.Word word = new DelayedPrinter.Word(100, "Hello, word");
        word.setOffset(50);
        DelayedPrinter.printText(word, textView);
Делал на коленке, не проверял. Так что проверьте сами
1
 Аватар для Ringov
2 / 2 / 0
Регистрация: 07.03.2015
Сообщений: 4
07.03.2015, 17:46  [ТС]
YuraAAA, код заработал сразу и как нужно, остается только снять шляпу и сказать спасибо!

Результат выше всяких похвал:
Кликните здесь для просмотра всего текста
1
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.03.2015, 17:51
Ringov, о, прикольно, мне нравится запись в блог, Вам - не за что, обращайтесь =)
0
 Аватар для Ringov
2 / 2 / 0
Регистрация: 07.03.2015
Сообщений: 4
07.03.2015, 18:00  [ТС]
YuraAAA, только Ваш метод при повторном вызове вываливался с ошибкой, я позволил себе кое-что добавить, а раз Вы публикуете это в блог, думаю тоже стоит поправить

Обнуление currentCharacterIndex, когда доберемся до конца строки:
Java
1
2
3
if (word.currentCharacterIndex >= word.word.length()){
word.currentCharacterIndex = 0;
return;}
И в начале метода очистка textView (ну это конечно по желанию):
Java
1
if(word.currentCharacterIndex == 0) textView.setText("");
1
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
07.03.2015, 18:05
Ringov, а, ну да, точно. Всё правильно =)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2015, 18:05
Помогаю со студенческими работами здесь

Написать программу печатания текста по буквам
Ребята..помогите.. как мне сделать так, чтобы текст печатался по буквам в graphABC, как например в разных квест играх во время диалогов,...

После окончания печатания текста выполнить действие
есть скрипт печатания текста по буквам. не знаю как после того как весь текст напечатан отключить объект.(txt) using UnityEngine; ...

Выделение текста в TextView
При выделении текста в TextView android:textIsSelectable=&quot;true&quot; на моем устройстве(HTC ONE X Android 4.2.2) появляется всплывающее меню,...

TextView авторазмер текста
android studio Textview имеет размеры 100% на 50%, заполняя половину экрана. В нем написано число, которое изменяется по нажатию на...

TextView выравнивание текста
В текст в TextView по умолчанию идет выравнивание текста по левому краю. Как выровнять текст по всей ширине, как если бы в Word вы нажали...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru