android:随机选择属性的方法

时间:2011-11-22 23:40:03

标签: java android arrays arraylist

我有一个简单的程序来通过画布绘制简单的形状。

private class MyViewCircle extends View {

    public MyViewCircle(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.RED);
        canvas.drawCircle(89, 150, 30, paint);
    }

}

如您所见,圆圈的属性为

(Color.RED); 
(89, 150, 30, paint);

我想创建另一个包含很多其他功能(颜色和坐标)并随机选择它们。 那么,哪种方式更好,阵列或arraylist或其他什么?有人能给我一个如何做到这一点的例子吗?那么如何随机选择它们并将它们放入绘图功能?干杯!

2 个答案:

答案 0 :(得分:0)

通常在Android上,我总是希望使用Array而不是使用ArrayList来提高性能。

要随机选择,您可以使用Math.random()方法或util.Random对象。使用其中任何一个都可以生成索引值,并使用该索引从数组中读取数据。

真的应该非常简单,所以除非你真的需要,否则我不会写任何代码。

答案 1 :(得分:0)

尝试创建一个简单的Java对象以包含所有属性,然后将它们添加到单个列表中并随机选择一个项目:

class MyAttributes {
    int color;
    int x, y;
    int radius;

    public MyAttributes(int color, int x, int y, int radius) {
        this.color = color;
        this.x = x;
        this.y = y;
        this.radius = radius;
    }
}

在您的View类中:

private List<MyAttributes> mAttributes;
private Random mRandom;

public MyViewCircle(Context context) {
    mRandom = new Random();
    mAttributes = new ArrayList<MyAttributes>();

    mAttributes.add(new MyAttributes(Color.RED, 80, 70, 199));
    mAttributes.add(new MyAttributes(Color.BLUE, 50, 170, 88));
}


@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setAntiAlias(true);

    int randomPosition = mRandom.nextInt(mAttributes.size());
    MyAttributes randomAttr = mAttributes.get(randomPosition);

    paint.setColor(randomAttr.color);
    canvas.drawCircle(randomAttr.x, randomAttr.y, randomAttr.radius, paint);
}