Почему я не могу нарисовать прямоугольник на холсте в Android?
public class OverlayView extends View {
private Rect rectangle;
private Paint paint;
int l,t,r,b;
private final List<DrawCallback> callbacks = new LinkedList<DrawCallback>();
public OverlayView(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public void addCallback(final DrawCallback callback) {
callbacks.add(callback);
}
@Override
public void onDraw(Canvas canvas) {
Log.v("drawrectindraw",String.valueOf(l)+" "+String.valueOf(t)+" "+String.valueOf(r)+" "+String.valueOf(b));
rectangle = new Rect(l, t, r, b);
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
canvas.drawRect(rectangle, paint);
}
public OverlayView(Context context, int l, int t, int r, int b) {
super(context);
this.l = l;
this.t = t;
this.r = r;
this.b = b;
rectangle = new Rect(this.l, this.t, this.r, this.b);
Log.v("drawrect",String.valueOf(this.l)+" "+String.valueOf(t)+" "+String.valueOf(r)+" "+String.valueOf(b));
}
public interface DrawCallback {
public void drawCallback(final Canvas canvas);
}
}
Я передаю значения прямоугольника из своей деятельности в свой класс пользовательского представления, чтобы непрерывно рисовать прямоугольник на экране.
Невозможно понять, почему я 0 0 0 0 в методе onDraw, в моем конструкторе я могу получить правильные значения.
например, drawrect: 153 494 535 875
Журнал
02-25 18: 02: 28,795 30639-30639 / V / drawrectindraw: 0 0 0 0
02-25 18: 02: 29.025 30639-31224 / V / Drawrect: 153 494 535 875
02-25 18: 02: 29.164 30639-30639 / V / drawrectindraw: 0 0 0 0
02-25 18: 02: 29.366 30639-31412 / V / Drawrect: 153 494 535 875
02-25 18: 02: 29.516 30639-30639 / V / drawrectindraw: 0 0 0 0
02-25 18: 02: 29,745 30639-30767 / V / Drawrect: 199 481 517 801
02-25 18: 02: 29.919 30639-30639 / V / drawrectindraw: 0 0 0 0