Как добавить изменяемый текст на заставку? - PullRequest
0 голосов
/ 30 мая 2019

Привет, я хочу добавить текст на заставке на заставке. Я добавил один текст на изображение, но я хочу изменять текст каждый раз, когда приложение открывается. Как это сделать, скажите, пожалуйста.

Я добавил один текстовый вид в 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>

Ответы [ 3 ]

2 голосов
/ 30 мая 2019

Вы можете сделать следующее:

  1. Вы создаете класс, расширяющийся от 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]);
        }
    }
    

    Это позволяет вам редактировать текстовое представление при выполнении кода в вашей ветке.

  2. Запустите асинхронную задачу из действия, передав ее по параметрам, списку строк, требуемому времени в миллисекундах между изменениями текста и текстовым представлением, которое вы хотите изменить:

    TextView myTextView = findViewById(R.id.myTextView);
    
    new MyAsyncTask(
            getResources().getStringArray(R.array.quote_array),
            5000,
            myTextView).execute();
    

Надеюсь, это было полезно для вас.

1 голос
/ 30 мая 2019

Генерация случайного числа и получение элемента из массива в этой случайной позиции.

Пример кода:

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]);
0 голосов
/ 30 мая 2019

Это зависит от того, чего вы хотите достичь. Если порядок не имеет значения, вы можете использовать случайное целое число new Random.nextInt(stringArray.length() - 1); при каждом запуске приложения. Но если вы хотите показать ваши строки в порядке от 0 до последнего, вам нужно сохранить предыдущий индекс в любом хранилище. Я думаю, что SharedPreferences является лучшим решением для этого.

Удачи!

...