2012-04-01 5 views
0

Android newb здесь. Пожалуйста, используйте небольшие слова :-)производство пишущей машинки-эффект

Я хотел бы симулировать вывод пишущей машинки на моем Android. Отображаемый результат генерируется игрой и представляет собой немного свободную форму. Эффект, который я хочу видеть, отображает отдельные символы со скоростью около 6 символов в секунду. Когда появится «возврат каретки», я хотел бы вставить задержку, а затем возобновить ввод слева.

Какие есть предложения по просмотрам? Будет ли выбор для этого вариантом TextView? Даже это кажется излишним для этого исключительно грубо прокручиваемого вывода.

Я увидел что-то на this thread об AsyncTask. Это выглядит полезным. Возможно, моя игра будет записываться в какой-то буфер, а подкласс AsyncTask вытащит персонажа каждые 15 секунд или около того, добавит его в TextView, а затем аннулирует() TextView? Звучит как план?

Разрешение:

Я завернул TextView в ScrollView и он работал отлично. Предложенный «TextView.append()» также выполнил эту работу, как и ожидалось. Однако у меня были проблемы с scroll.FullScroll(). По-видимому, это нужно выполнить с помощью Runnable из метода scroll.post(). Я не знаю, почему, точно, но я буду копаться в этом позже. В нем есть несколько SO-потоков.

ответ

2

Будет ли вид выбора для этого быть TextView?

TextView, завернутый в ScrollView кажется вероятным:

<ScrollView android:id="@+id/scroll" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <TextView android:id="@+id/transcript" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
    /> 
    </ScrollView> 

Звук как план?

Для этого вам не нужен AsyncTask. Используйте postDelayed() на своем TextView или что-то, чтобы запланировать Runnable для работы в 166 миллисекунд. Это Runnable воля:

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

первые две пули будет выглядеть так:

transcript.append(yourCharacter); 
scroll.fullScroll(View.FOCUS_DOWN); 

Все будет не совсем ровным, так как это 166 мс - это минимальное время до запуска Runnable. OTOH, слегка нерегулярная доставка ключей будет акцентировать эффект пишущей машинки.

+0

Вау, это отличная информация! Благодаря! –

+0

Я вижу, что TextView имеет средство прокрутки. Какова ценность его упаковки в ScrollView? –

+0

@TonyEnnis: Я не уверен, что такое «средство прокрутки», о котором вы говорите. Все виджеты имеют свойства и методы, связанные с прокруткой, но они не прокручиваются - они должны находиться в прокручиваемом контейнере.Вы можете * избегать «ScrollView» с соответствующими настройками для гравитации «TextView», но тогда пользователь не сможет прокручивать вверх, чтобы прочитать остальное. – CommonsWare

Смежные вопросы