Как я могу нарисовать больше прямоугольников в холсте на холсте? - PullRequest
0 голосов
/ 10 апреля 2019

Я делал тестовое приложение для разработки в будущем более сложного, и я спрашиваю себя, могу ли я нарисовать больше прямоугольников на холсте (возможно, один слева, один центр и один справа).Без использования какого-либо ImageView, TextView или этого.Вот мой код:

public class MioCanvas extends View {

Paint paint;
Rect rect;

public MioCanvas(Context context) {
    super(context);
    paint = new Paint();
    rect = new Rect();
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    paint.setColor(Color.GRAY);
    paint.setStrokeWidth(3);
    canvas.drawRect(0, 1999999, canvas.getWidth() / 2, canvas.getHeight() / 2, paint);
}
}

А вот активность:

public class MainActivity extends AppCompatActivity {

MioCanvas mioCanvas;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mioCanvas = new MioCanvas(this);
    mioCanvas.setBackgroundColor(Color.GREEN);
    setContentView(mioCanvas);
}
}

1 Ответ

1 голос
/ 10 апреля 2019

Чтобы достичь желаемого, вы можете, например, создать объект с именем MyRectangle, в котором вы будете хранить ссылку на его ширину, высоту, positionX, positionY, ссылку на цвет и т. Д.

Внутри вашегоMioCanvas класс помещает глобальную переменную, такую ​​как:

List<MyRectangle> rectangleList;

Инициализируйте ее в своем конструкторе, создайте несколько прямоугольников и добавьте их в список.

Наконец, выполните итерацию по списку внутри onDraw метод как таковой для рисования прямоугольников:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for(MyRectangle rectangle : rectangleList){
        paint.setColor(rectangle.getColour());
        paint.setStrokeWidth(rectangle.getStroke());
        canvas.drawRect(rectangle.getPositionX(), rectangle.getPositionY(), rectangle.getWidth() / 2, rectangle.getHeight() / 2, paint);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...