Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Ringov
 Аватар для Ringov
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 4
07.03.2015, 13:58     Анимация печатания текста в TextView #1
Приветствую всех.

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


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

Пробовал разные варианты, но ни один не подошел, а своих знаний не хватает на реализацию чего-то подобного.
Лучше всего справляется Timer, но я так и не придумал, как реализовать рандомные интервалы (подозреваю что таймер по своей сути на такое не способен).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2015, 13:58     Анимация печатания текста в TextView
Посмотрите здесь:

Android Вставка текста из файла в TextView
Android TextView выравнивание текста
Android Динамическое изменение текста в TextView
Android Выделение текста в TextView
Android Добавление ссылок и html текста в TextView и диалоги
Textview. Изменение текста по нажатию кнопки не происходит Android
Android Прокрутка текста в TextView без ScrollView
TextView авторазмер текста Android
Отображение текста (из файла) в textView Android
Android Событие после изменения текста в TextView
Анимация счетчика (TextView) от 0 до 1000? Android
Выравнивание текста в TextView по ширине Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.03.2015, 15:44     Анимация печатания текста в TextView #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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);
Делал на коленке, не проверял. Так что проверьте сами
Ringov
 Аватар для Ringov
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 4
07.03.2015, 17:46  [ТС]     Анимация печатания текста в TextView #3
YuraAAA, код заработал сразу и как нужно, остается только снять шляпу и сказать спасибо!

Результат выше всяких похвал:
Кликните здесь для просмотра всего текста
Анимация печатания текста в TextView
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.03.2015, 17:51     Анимация печатания текста в TextView #4
Ringov, о, прикольно, мне нравится запись в блог, Вам - не за что, обращайтесь =)
Ringov
 Аватар для Ringov
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 4
07.03.2015, 18:00  [ТС]     Анимация печатания текста в TextView #5
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("");
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.03.2015, 18:05     Анимация печатания текста в TextView #6
Ringov, а, ну да, точно. Всё правильно =)
Yandex
Объявления
07.03.2015, 18:05     Анимация печатания текста в TextView
Ответ Создать тему
Опции темы

Текущее время: 19:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru