Я пытаюсь обновить отображение клепсидры, используя invalidate в одном из методов установки класса. Тем не менее, это, кажется, не называется. С другой стороны, если я добавлю в метод onDraw invalidate, это сработает. Что-то мне не хватает в документации.
До сих пор я пытался написать сделать недействительным различными способами:
- this.invalidate ()
- сделать недействительным ()
public void setFillRatio(double fillRatio) {
if (this.fillRatio != fillRatio){
this.fillRatio = fillRatio;
this.invalidate();
Log.i("je suis passée", fillRatio + "");
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
Paint p2 = new Paint();
p.setColor(Color.GRAY);
p2.setColor(Color.BLUE);
Log.i("filll ratio on draw",canvas.getHeight() - (canvas.getHeight() * fillRatio) + "");
canvas.drawRect(new Rect(0,0, canvas.getWidth(), canvas.getHeight()), p);
canvas.drawRect(new Rect(0, (canvas.getHeight() - (int)(canvas.getHeight() * fillRatio)), canvas.getWidth(), canvas.getHeight()), p2);
}
Как ни странно, в журнале setFillRatio () регистрируется, что находится в методе invalidate, но журнал из onDraw не вызывается.
Редактировать 1:
Если кто-то хочет протестировать проект, не стесняйтесь загрузить его через google drive url: url диска проекта