Добавление прокручиваемого текстового представления с шагом по времени - PullRequest
1 голос
/ 02 марта 2011

Я создал текстовое представление с прокруткой и смог добавить текст и прокрутку просто отлично.Дело в том, что я пытаюсь добавлять текст через определенные промежутки времени, и пользователь может настроить указанный интервал, нажав одну из двух кнопок в нижней части экрана.Все на месте, но что бы я ни делал, я могу заставить его отображать весь текст сразу после всей продолжительности.Скажем, я пытаюсь добавить текст каждые полсекунды в течение десяти секунд.Запуск его ничего не дает в течение десяти секунд, а затем все появляется.Я пробовал / пока циклы со счетчиками и отслеживания по системному времени.Нету.Рекурсия мгновенно уносит стек, что не было большой неожиданностью.Использование wait () или Thread.sleep () не работает и в любом случае не будет идеальным, так как кнопки должны постоянно работать.Создание отдельного потока в закрытом внутреннем классе не сработало, так как нельзя касаться представлений, созданных в другом потоке.Попытка создать пользовательское представление в отдельном потоке отказалась работать по причинам, которые я пока не могу выяснить.

Как, черт возьми, я бы сделал это, чтобы каждая запись добавлялась в реальном времени?

1 Ответ

0 голосов
/ 20 июня 2011

В моем случае отлично работает для автопрокрутки вместе с одним объектом таймера

timer=new Timer();
scroll.setSmoothScrollingEnabled(true);
scroll.pageScroll(ScrollView.FOCUS_DOWN);
scroll.smoothScrollTo(0, text.getBaseline());
x=text.getBaseline();
Toast.makeText(scoruby.this,"number"+x++, Toast.LENGTH_SHORT).show();

timer.schedule(new TimerTask() {

@Override
public void run() {
    TimerMethod();


}
}, 0,1000);
}
private void TimerMethod()
{
//This method is called directly by the timer
//and runs in the same thread as the timer.

//We call the method that will work with the UI
//through the runOnUiThread method.
this.runOnUiThread(Timer_Tick);
}

private Runnable Timer_Tick = new Runnable() {
public void run() {
    x+=5;
    scroll.smoothScrollTo(0, x++);  



}
};
...