Как заставить представление Android перерисовать фоновый рисунок?/ возможно, анимация блокирует его работу - PullRequest
3 голосов
/ 20 января 2011

Есть ли способ заставить представление Android перерисовать фон? Я установил рисованную фигуру с градиентом в качестве фона, который прекрасно работает, но после изменения высоты вида вы можете увидеть эти уродливые шаги градиента.

Что я могу сделать? Я пробовал view.invalidate() и view.refreshDrawableState() без видимой разницы.

Спасибо!

// EDIT: Вот еще несколько деталей и мой код: После ваших ответов я думаю, что полоса является результатом моего, вероятно, плохого кода. Вот что я делаю:

  1. Масштабирование вида
  2. установка его новой ширины и высоты, потому что масштабированное представление не принимает пользовательский ввод в других областях, чем «старое» (см. странное (по крайней мере для меня) поведение Android управления после масштабирования / не принимает ввод во всей его области )
  3. попытка установить фон снова (который содержит градиент и прямоугольник с закругленными углами)

Вот мой код:

public void onAnimationEnd(Animation animation)
{
    MyView view = (MyView) ((ExtendedScaleAnimation) animation).getView();
    view.getLayoutParams().width = toWidth;
    view.getLayoutParams().height = toHeight;
    view.clearAnimation();
    view.requestLayout();
    view.refreshBackground(); // background will be changed
}

На устройстве вы можете видеть, что фон рисования изменен, но есть мерцание, которое мне кажется, что изменение фона применяется до того, как анимация закончится. Программно это должно быть закончено! Или я не прав?

Еще раз спасибо!

1 Ответ

2 голосов
/ 20 января 2011

Можете ли вы попробовать после изменения размера: v.setBackgroundResource (нуль); v.setBackgroundResource (... my drawable ...);

...