Redraw View Android
Теперь у меня есть представление, которое добавляется программно после onCreate (в зависимости от некоторых других переменных). Все работает как надо и рисует часть круга.
Но мой вопрос: как мне перерисовать его позже? Мне нужно изменить угол в круге после получения некоторых данных.
Код для WindRose:
public class WindRose extends View {
public WindRose(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvasTest = canvas;
float height = (float) getHeight();
float width = (float) getWidth();
float radius;
if (width > height) {
radius = height / 2;
} else {
radius = width / 2;
}
// radius = (height )/ 2;
Path path = new Path();
path.addCircle(width, height, radius, Path.Direction.CCW);
// / 2
Resources resources = getResources();
int color = resources.getColor(R.color.green_back);
paint.setColor(color);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.FILL);
float center_x, center_y;
center_x = width / 2;
center_y = height / 2;
//Formulas :
//SD = Start Degree
//ED = End Degree
//If cakepiece passes 0 (East)
//SD, 360-(SD+ED)
//Else :
//SD, (ED-SD)
oval.set(center_x - radius, center_y - radius, center_x + radius, center_y + radius);
if (End > Start) {
canvas.drawArc(oval, Start, (End - Start), true, paint);
} else if (End < Start) {
canvas.drawArc(oval, Start, ((360 - Start) + End), true, paint);
}
}
}
Если я обновлю Start
а также End
переменных ничего не происходит. я также пытался позвонить invalidate
в классе, но и там я не получаю перерисовки.
Подтвердите, что я пробовал:
WindRose windrose = new WindRose(this);
windrose.invalidate();
Был вызван из основного класса, частью которого является WindRose.
Как я должен сделать это правильно?
1 ответ
Может быть, зовет invalidate()
метод зрения поможет.
Вы можете прочитать больше здесь ( http://developer.android.com/reference/android/view/View.html), но: "Чтобы заставить представление рисовать, вызовите invalidate()".
Обратите внимание также на то, что вы можете сделать недействительными только части представления