Отображение текста на экране с задержкой (Android Studio) ⇐ Android
-
Гость
Отображение текста на экране с задержкой (Android Studio)
Привет всем. Недавно я начал разработку в Android Studio и столкнулся с проблемой. Я разрабатываю текстовый роман по аналогии с LifeLine. Суть в том, что текст истории отображается на экране с небольшой задержкой. Я хочу, чтобы геймплей был похож на общение в мессенджере. При полном отображении текста из массива на экране должно отображаться от 2 до 5 кнопок с выбором действия.
Теперь опишу проблему. Для отображения текста я использую компонент ListView. Если я добавлю в цикл задержку в 1 секунду, то текст будет отображаться не последовательно, а будет отображаться полностью. А хотелось бы, чтобы текст отображался последовательно с задержкой в 1 секунду. Я попробовал использовать обработчик, и это помогло. Однако когда я хочу отобразить кнопки после завершения цикла, это не работает, и кнопка отображается сразу. Я понимаю, почему это происходит.
Но у меня вопрос — можно ли отказаться от использования многопоточности? Как лучше всего реализовать мою идею?
Основной класс:
публичный класс GameMain расширяет AppCompatActivity { @SuppressLint («Миссингинфлатедид») @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_game_main); ListView mainList = findViewById(R.id.list_of_text); //Новая игра newGame = новая новая игра(); окончательный адаптер ArrayAdapter = новый ArrayAdapter(this, android.R.layout.simple_list_item_1); Строка[] listText = { "Текст 1", «Текст2», «Текст3», }; mainList.setAdapter(адаптер); SetTextOnDisplay textOnDisplay = новый SetTextOnDisplay (); textOnDisplay.displayTextSequentially (listText, адаптер); Кнопка button1 = findViewById(R.id.button_main_1); button1.setVisibility(View.VISIBLE); } } Класс для отображения текста:
публичный класс SetTextOnDisplay расширяет поток { public void displayTextSequentially(final String[] listText, окончательный адаптер ArrayAdapter) { окончательный обработчик обработчика = новый обработчик(); интервал задержки = 500; for (int i = 0; i
Привет всем. Недавно я начал разработку в Android Studio и столкнулся с проблемой. Я разрабатываю текстовый роман по аналогии с LifeLine. Суть в том, что текст истории отображается на экране с небольшой задержкой. Я хочу, чтобы геймплей был похож на общение в мессенджере. При полном отображении текста из массива на экране должно отображаться от 2 до 5 кнопок с выбором действия.
Теперь опишу проблему. Для отображения текста я использую компонент ListView. Если я добавлю в цикл задержку в 1 секунду, то текст будет отображаться не последовательно, а будет отображаться полностью. А хотелось бы, чтобы текст отображался последовательно с задержкой в 1 секунду. Я попробовал использовать обработчик, и это помогло. Однако когда я хочу отобразить кнопки после завершения цикла, это не работает, и кнопка отображается сразу. Я понимаю, почему это происходит.
Но у меня вопрос — можно ли отказаться от использования многопоточности? Как лучше всего реализовать мою идею?
Основной класс:
публичный класс GameMain расширяет AppCompatActivity { @SuppressLint («Миссингинфлатедид») @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_game_main); ListView mainList = findViewById(R.id.list_of_text); //Новая игра newGame = новая новая игра(); окончательный адаптер ArrayAdapter = новый ArrayAdapter(this, android.R.layout.simple_list_item_1); Строка[] listText = { "Текст 1", «Текст2», «Текст3», }; mainList.setAdapter(адаптер); SetTextOnDisplay textOnDisplay = новый SetTextOnDisplay (); textOnDisplay.displayTextSequentially (listText, адаптер); Кнопка button1 = findViewById(R.id.button_main_1); button1.setVisibility(View.VISIBLE); } } Класс для отображения текста:
публичный класс SetTextOnDisplay расширяет поток { public void displayTextSequentially(final String[] listText, окончательный адаптер ArrayAdapter) { окончательный обработчик обработчика = новый обработчик(); интервал задержки = 500; for (int i = 0; i
Мобильная версия