Привет, я хочу добавить текст на изображение-заставку на экране-заставке. я добавил один текст на изображение, но я хочу менять текст каждый раз, когда приложение открывается. как это сделать, пожалуйста, скажите мне.
я добавил одно текстовое представление в splash.xml, которое он отображает. Но я хочу отображать все элементы в list.xml один за другим при каждом открытии приложения.
<TextView
android:id = "@+id/quote"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Your limitation—it's only your imagination."
android:textColor = "#ffffff"
android:textSize = "36sp"
android:layout_centerInParent = "true"/>
в list.xml
<string-array name = "quote_array">
<item>Your limitation—it's only your imagination.</item>
<item>Great things never come from comfort zones.</item>
<item>The harder you work for something, the greater you’ll feel when you achieve it.</item>
</string-array>
Quote.settext(arraylist.get(randomnumber));
Сгенерируйте случайное число и получите элемент из массива в этой случайной позиции.
Образец кода:
TextView quote = findViewById(R.id.quote);
String[] quoteArray = getResources().getStringArray(R.array.quote_array);
int randomPosition = (int)(Math.random()*(quoteArray.length-1))
quote.setText(quoteArray[randomPosition]);
Вы можете сделать следующее:
Вы создаете класс, который расширяется от AsyncTask:
public class MyAsyncTask extends AsyncTask<Void, String, Void> {
private String[] stringArray;
private TextView myTextView;
private long delay;
MyAsyncTask(String[] stringArray, long delay, TextView myTextView) {
this.stringArray = stringArray;
this.delay = delay;
this.myTextView = myTextView;
}
@Override
protected Void doInBackground(Void... voids) {
try {
for (String value : stringArray) {
Thread.sleep(delay);
publishProgress(value);
}
} catch (InterruptedException ex) {
// Handle interrupted exception
}
return null;
}
@Override
protected void onProgressUpdate(String... value) {
myTextView.setText(value[0]);
}
}
Это позволяет вам редактировать текстовое представление, когда код выполняется в вашем потоке.
Запустите асинтаск из активности, передав ей параметрами список строк, время в миллисекундах, которое вы хотите между изменениями текста, и текстовое представление, которое вы хотите изменить:
TextView myTextView = findViewById(R.id.myTextView);
new MyAsyncTask(
getResources().getStringArray(R.array.quote_array),
5000,
myTextView).execute();
Я надеюсь, что это было полезно для вас.
Это зависит от того, чего вы хотите достичь. Если порядок не имеет значения, вы можете использовать случайное целое число с помощью new Random.nextInt(stringArray.length() - 1);
каждый раз, когда запускаете приложение. Но если вы хотите показать свои строки в порядке от 0 до последнего, вам нужно сохранить предыдущий индекс в любом хранилище. Я думаю, что SharedPreferences
- лучшее решение для этого.
Удачи!
Просто получите список массивов внутри заставки, а затем сгенерируйте случайное число по размеру массива после этого набора текста, такого как arraylist.get(случайное число).