java - 如何从数组中获取随机文本字符串,像彩票一样的“循环动画”?
问题描述
我正在构建一个非常简单的 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]);
}
});
解决方案
只需复制(甚至相乘 - 取决于动画长度)数组中的值和shuffle
this。然后在一个循环中,遍历表,以一定的间隔将以下值放入视图,并在最后一个元素上停止 - 这将是随机元素(感谢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
}
推荐阅读
- java - How to write the "resize" function for a self-defined ArrayList class?
- javascript - React 中的大数
- xml - 需要使用 XSLT 1.0 将 XML 节点的文本分解为子节点
- node.js - Create-react-app 返回“找不到模块 'rxjs'”
- amazon-s3 - Localstack 服务“s3”尚不可用,正在重试
- yii2 - ckEditor 5 图片上传禁止 403
- reactjs - 尝试导入错误:未从“react-bootstrap”导出“十四行诗”
- javascript - rc-calendar 检测日期日历中的月份变化
- reactjs - React Redux PUT 请求失败
- javascript - GraphQL Mutation 如何与 Type 关联