首页 > 解决方案 > 如何从数组中获取随机文本字符串,像彩票一样的“循环动画”?

问题描述

我正在构建一个非常简单的 Android 应用程序,几乎没有任何 Java 编程知识。应用程序几乎完成了,应用程序所做的是,当我按下按钮时,它会从字符串数组中随机显示一个值。

我想要实现的是一个小的“动画”,它快速滚动数组中的所有值,然后随机停止。几乎就像一个“文本的旋转轮”。

我已经弄清楚也许定时器功能是要走的路。如果有人可以帮助我,那就太好了。

这是包含所有值的数组:

final String[] myNames = {
                "Sax12345",
                "Tyg12345",
                "Djur12345",
                "Hund12345",
                "Trafik2019",
                "Gruvan2019",
                "Kaffe2019"
        };

这就是按下按钮时发生的情况:

        genButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Random randGen = new Random();
                int rando = randGen.nextInt(7);

                textOne.setText(myNames[rando]);
            }
        });

标签: javaandroid

解决方案


只需复制(甚至相乘 - 取决于动画长度)数组中的值和shufflethis。然后在一个循环中,遍历表,以一定的间隔将以下值放入视图,并在最后一个元素上停止 - 这将是随机元素(感谢shuffle方法)

就像是

    List<String> presentationList = new ArrayList<>();

    for(int i = 0; i < HOW_MUCH_SHOULD_IT_BE_MULTIPLICATED; i++) {
        presentationList.addAll(Arrays.asList(myNames));
    }

    Collections.shuffle(presentationList);

    String winnerString = presentationList.get(presentationList.size() - 1); //this is basically winner string

    // now the time for 'animation'
    for(String value : presentationList) {
        textOne.setText(value);
        // wait for a Xms
    }

推荐阅读