Im пишу приложение для чтения строки текста, выделяя каждое слово последовательно по мере чтения строки. Идея состоит в том, чтобы начать играть на линии (это книга с картинками для детей, поэтому по одной строке за раз), затем читать текст, длину каждого слова в миллисекундах, а затем в нужное время выделять слово в текстовом виде.android handler для последовательных задержек
Мой подход: Положите слова предложения в массив (и в конечном итоге длину каждой работы, но на данный момент просто принимайте 1000 мс каждый); Напишите слово textViewPartial; Задержка длины слова; Добавьте следующее слово в предложение и напишите его в textViewPartial .... и т. Д.
Но я не могу определить сроки. Прочитайте все, что я могу найти на обработчике и асинхронном режиме, и самое лучшее, что я могу придумать, следующее: я помещал обработчик postdelayed в цикл for. Мой мозг говорит, что он будет задерживаться каждый раз, когда цикл петлитель, но вы можете видеть из вывода logcat, которого нет. Перед запуском цикла for существует только одна задержка. Это мой первый пост, и я не вижу, как вы получаете свой цветной код из Eclipse, поэтому я надеюсь, что он выглядит нормально.
public class LineOutHanler extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line_out_hanler);
TextView t = new TextView(this);
t=(TextView) findViewById (R.id.textView10);
String textOut = "Oh how my spleen aches to see you again";
final TextView textViewPartial = (TextView) findViewById(R.id.textView11);
final String[] wordsOut = textOut.split(" ");
final int wordsInSentence = wordsOut.length;
int[] wordLength = new int[wordsInSentence];
for (int counter=0;counter<=wordsInSentence-1;counter++){
wordLength[counter]=wordsOut[counter].length();}
String partialSentence ="";
for (int counter=0; counter<=wordsInSentence-1; counter++){
String c= addWordsOut(wordsOut[counter], partialSentence);
textViewPartial.setText(c);
partialSentence = c;
Log.d("Word", partialSentence);
final String partialOut=c;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
textViewPartial.setText(partialOut);
Log.d("Handler", partialOut);
}
} , 2000);}
}
public String addWordsOut (String part, String upToHere) {
upToHere=upToHere+" " + part;
return upToHere;
}
}
и выход LogCat:
10-19 23:07:32.248: E/cutils-trace(39): Error opening trace file: No such file or directory (2)
10-19 23:07:32.368: D/AudioSink(39): bufferCount (4) is too small and increased to 12
10-19 23:07:32.379: D/Word(821): Oh
10-19 23:07:32.379: D/Word(821): Oh how
10-19 23:07:32.388: D/Word(821): Oh how my
10-19 23:07:32.388: D/Word(821): Oh how my spleen
10-19 23:07:32.388: D/Word(821): Oh how my spleen aches
10-19 23:07:32.388: D/Word(821): Oh how my spleen aches to
10-19 23:07:32.388: D/Word(821): Oh how my spleen aches to see
10-19 23:07:32.398: D/Word(821): Oh how my spleen aches to see you
10-19 23:07:32.398: D/Word(821): Oh how my spleen aches to see you again
10-19 23:07:33.328: I/Choreographer(288): Skipped 30 frames! The application may be doing too much work on its main thread.
10-19 23:07:33.368: I/ActivityManager(288): Displayed com.example.testtextout/.LineOutHanler: +1s820ms
10-19 23:07:35.320: W/AudioFlinger(39): write blocked for 1091 msecs, 1 delayed writes, thread 0x40e0b008
10-19 23:07:35.320: D/Handler(821): Oh
10-19 23:07:35.329: D/Handler(821): Oh how
10-19 23:07:35.329: D/Handler(821): Oh how my
10-19 23:07:35.329: D/Handler(821): Oh how my spleen
10-19 23:07:35.329: D/Handler(821): Oh how my spleen aches
10-19 23:07:35.329: D/Handler(821): Oh how my spleen aches to
10-19 23:07:35.339: D/Handler(821): Oh how my spleen aches to see
10-19 23:07:35.339: D/Handler(821): Oh how my spleen aches to see you
10-19 23:07:35.339: D/Handler(821): Oh how my spleen aches to see you again
10-19 23:08:30.588: D/dalvikvm(396): GC_FOR_ALLOC freed 452K, 15% free 3047K/3556K, paused 40ms, total 65ms
10-19 23:25:42.149: D/dalvikvm(288): GC_FOR_ALLOC freed 850K, 31% free 5593K/7996K, paused 99ms, total 117ms
Первого вопрос - это правильный подход в первую очередь? Второй вопрос - как я могу заставить его работать?
Большое спасибо.
Thankyou так много, что работает. Но предлагаете ли вы мне самим очистить инвентарь? Я вижу, что это будет хорошая практика. Я должен буду это изучить. – dulciepercy
Я точно не помню, но я не считаю, что ваши runnables автоматически очищаются, если ваша активность останавливается, например. Если бы я использовал ваше приложение, меня бы раздражало, если бы вы оставили свое приложение, и ваша книга продолжала читать в фоновом режиме! Было бы лучше проверить документацию для проверки. – MJD