android: как объединить несколько массивов из разных классов? - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть четыре функции рисования в моей основной деятельности.Это функция круга.

private class MyViewCircle extends View {

        public MyViewCircle(Context context) {
            super(context);
            attrCircle = new ArrayList<featureCircle>();
            random = new Random();
            attrCircle.add(new featureCircle(Color.BLACK, 80, 70, 70));
            attrCircle.add(new featureCircle(Color.BLUE, 20, 30, 80));
            attrCircle.add(new featureCircle(Color.CYAN, 80, 90, 90));
            // 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);
            int randomPosition = random.nextInt(attrCircle.size());
            featureCircle randomAttrCircle = attrCircle.get(randomPosition);
            ***if (evol)*** {
                //combine all arraylist
            } else {
                paint.setColor(randomAttrCircle.color);
                canvas.drawCircle(randomAttrCircle.x, randomAttrCircle.y,
                        randomAttrCircle.radius, paint);
            }

        }

    }

Это закрытый класс функции треугольника MyViewTri extends View {

    public MyViewTri(Context context) {
        super(context);
        attrTri = new ArrayList<featureTri>();
        random = new Random();
        attrTri.add(new featureTri(Color.RED, 190, 210, 150, 230, 140, 270));
        attrTri.add(new featureTri(Color.MAGENTA, 100, 45, 190, 230, 114,
                167));
        attrTri.add(new featureTri(Color.YELLOW, 222, 111, 123, 156, 289,
                209));
        // 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);
        int randomPosition = random.nextInt(attrTri.size());
        featureTri randomAttrTri = attrTri.get(randomPosition);
        paint.setColor(randomAttrTri.color);
        Path pathTri = new Path();
        pathTri.moveTo(randomAttrTri.x1, randomAttrTri.y1);
        pathTri.lineTo(randomAttrTri.x2, randomAttrTri.y2);
        pathTri.lineTo(randomAttrTri.x3, randomAttrTri.y3);
        pathTri.close();
        canvas.drawPath(pathTri, paint);
    }

}

У меня есть другие классы для значений, например

public class featureTri {
    int x1,y1,x2,y2,x3,y3;
    int color;
    public featureTri(int color, int x1, int y1, int x2, int y2, int x3, int y3){
        this.color = color;
        this.x1 = x1;
        this.y2 = y1;
        this.x2 = x2;
        this.y2 = y2;
        this.x3 = x3;
        this.y3 = y3;
    }
}

Моя цель - когда «evol» становится ИСТИНОЙ, все массивы будут объединяться вместе, поэтому я могу случайным образом выбрать значение из них всех.Может кто-нибудь сказать мне, как я могу это сделать?

            attrCircle.add(new featureCircle(Color.BLACK, 80, 70, 70));
            attrCircle.add(new featureCircle(Color.BLUE, 20, 30, 80));
            attrCircle.add(new featureCircle(Color.CYAN, 80, 90, 90));
        attrTri.add(new featureTri(Color.RED, 190, 210, 150, 230, 140, 270));
        attrTri.add(new featureTri(Color.MAGENTA, 100, 45, 190, 230, 114,
                167));
        attrTri.add(new featureTri(Color.YELLOW, 222, 111, 123, 156, 289,
                209));

(я хочу объединить все цвета в новый список и случайным образом их всех).

1 Ответ

0 голосов
/ 25 ноября 2011

Сделайте так, чтобы featureCircle и featureTri расширялись из нового класса featureColour, который обрабатывает int color; - тогда вы можете добавить круги и трис в один и тот же ArrayList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...