【问题标题】:How to Add changable text on splash screen?如何在启动画面上添加可变文本?
【发布时间】:2019-05-30 14:22:01
【问题描述】:

您好,我想在初始屏幕上的初始图像上添加文本。我在图像上添加了单个文本,但我想在每次应用打开时更改文本。如何做到这一点请告诉我。

我在它正在显示的 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>

【问题讨论】:

  • 只需在初始屏幕中获取数组列表,然后在设置文本(如 arraylist.get(random number))之后生成数组大小的随机数。
  • Quote.settext(arraylist.get(randomnumber));

标签: android android-layout splash-screen


【解决方案1】:

您可以执行以下操作:

  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();
    

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    生成一个随机数,并从该随机位置的数组中获取一项。

    示例代码:

    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]);
    

    【讨论】:

      【解决方案3】:

      这取决于您想要达到的目标。如果顺序无关紧要,您可以在每次启动应用程序时使用new Random.nextInt(stringArray.length() - 1); 的随机整数。但是如果你想按从 0 到最后的顺序显示你的字符串,你需要在任何存储中保留以前的索引。我认为SharedPreferences 是更好的解决方案。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2020-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2021-06-28
        • 2018-02-11
        • 1970-01-01
        相关资源
        最近更新 更多