【问题标题】:how to create array of numbers in range 1 to 100 in view class如何在视图类中创建 1 到 100 范围内的数字数组
【发布时间】:2018-01-23 08:18:56
【问题描述】:

大家,请帮帮我!

我想在一个形状中显示一个数字数组。

我做了什么

1) 我在 View 类中用画布绘制了一个形状。

2) 我创建了一个随机数。

3) 我搜索了很多,发现应该使用 Drawtext 来显示文本或数字。

4) 我已经阅读了 Random、Drawtext 等的文档。

5)我尝试过 for 循环,但它在画布类之外和内部不起作用,也会无限次重复该单个数字。

我的问题

我不知道如何将该数字放入数组以及如何在视图类中使用 drawtext 显示数组。

目前,我只能显示一个随机数,但我想显示一组随机数。

我是 Android 新手,我的英语不太好。 如果有人能帮我解决这个问题,我将不胜感激。

谢谢。

这是我用于创建单个随机数的代码部分(这是在类、构造函数和 onDraw 方法之外):

Random rand = new Random();
        int number = rand.nextInt(100) + 1;
        String mystring = String.valueOf(number);

& 在 onDraw 方法中显示这个数字,我在下面的代码中使用:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
canvas.drawText(mystring,130,480,black_paintbrushstroke);
}

【问题讨论】:

    标签: android arrays canvas random drawtext


    【解决方案1】:

    请尝试使用ArrayList 来保存您的随机数据,例如:

    ArrayList<Integer> arrayList = new ArrayList<>(100); 
    Random r = new Random(System.currentTimeMillis());
    for(int i = 0; i < 100; i++) {
        arrayList.add(r.nextInt());
    }
    

    然后:

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int yOffset = 10;
        int yStartPosition = 480;
        for (int i = 0; i < arrayList.size(); i++) {
            Integer integer = arrayList.get(i);
            canvas.drawText(String.valueOf(integer), 130, yStartPosition+(i*yOffset), black_paintbrushstroke);
        }
    }
    

    看起来您正在将所有项目绘制到同一个位置 (x,y),您需要添加一些垂直偏移来在前一个下方绘制新值。

    如果要将所有数字绘制为逗号分隔的字符串,则需要使用 StringBuilder 将数组转换为字符串:

    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < arrayList.size(); i++) {
        sb.append(arrayList.get(i)).append(",");
    }
    
    String myRandomNumbersArray = sb.toString();
    sb.setLength(0);
    

    【讨论】:

    • 谢谢,非常感谢。它真的很有帮助。 ^__^
    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多