Через год я только что вернулся к старому onDraw
коду и совершенно забыл о сложности рисования на холсте в Android, поэтому надеюсь, что это легко.Я рисую гистограмму и фрагмент для рисования прямоугольника:
Paint myPaint = new Paint();
myPaint.setStyle(Paint.Style.FILL);
myPaint.setColor(getResources().getColor(R.color.colorGrey1));
myPaint.setStrokeWidth(10);
for (int pos = 0; pos < barCoordLeft.size(); pos ++) {
c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRight.get(pos), barCoordBottom.get(pos), myPaint);
}
, который работает просто отлично, теперь я хотел наложить этот прямоугольник на более короткий прямоугольник другого цвета, показывая две метрики в однойбар.Я подумал, что могу просто сделать это, скопировав и вставив приведенный выше фрагмент кода, и отредактировать его следующим образом:
myPaint.setColor(getResources().getColor(R.color.colorGrey2));
for (int pos = 0; pos < barCoordLeft.size(); pos ++) {
c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRightSleep.get(pos), barCoordBottom.get(pos), myPaint);
}
т.е. изменить цвет и использовать другой ArrayList для координат.
Я все еще не понимаю, как работает onDraw
, поэтому здесь я упускаю что-то очевидное в отношении потока событий.
Я снимаю что-то вроде этого, как мнеподходить к нему?
![overlay bar](https://i.stack.imgur.com/AyWes.png)
PS> Причиной, по которой у меня есть цикл for, является диаграмма:
, поэтому вы думаете коддолжно работать то есть изменение цвета между ними?Просто кажется, что все это перерисовывается вторым цветом.Я знаю, что были некоторые ошибки с onDraw
относительно.к этому.
![for loop](https://i.stack.imgur.com/62608.png)
2.PS> D'OH, я должен создать новый объект Paint
, который был довольно очевиден, теперь этоработы:
Paint myPaint2 = new Paint();
myPaint2.setStyle(Paint.Style.FILL);
myPaint2.setColor(getResources().getColor(R.color.colorGrey2));
myPaint2.setStrokeWidth(10);
for (int pos = 0; pos < barCoordLeft.size(); pos ++) {
c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRightSleep.get(pos), barCoordBottom.get(pos), myPaint2);
![with 2 objects](https://i.stack.imgur.com/TACE7.png)