Я использую следующий код для анимации расширяемого макета:Android: расширить анимация не работает
class ExpandAnimation extends Animation {
private View _view;
private int _startHeight;
private int _finishHeight;
public ExpandAnimation(View view, int startHeight, int finishHeight) {
_view = view;
_startHeight = startHeight;
_finishHeight = finishHeight;
setDuration(500);
System.out.println(_startHeight);
System.out.println(_finishHeight);
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int newHeight = (int)((_finishHeight - _startHeight) * interpolatedTime + _startHeight);
_view.getLayoutParams().height = newHeight;
_view.requestLayout();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
public boolean willChangeBounds() {
return true;
}
};
Этой анимация создаются каждый раз, когда я нажимаю на кнопку. Он называется правильно (проверяется System.out.println и он печатает правильные значения), однако в эмуляции эмулятора работает только один раз в 15 раз. Точнее скрыть это отлично работает, но расширение работает только один раз несколько раз (на эмуляторе, не могу заставить его работать на телефоне).
В чем может быть проблема?
Спасибо вперед
EDIT: раскладка Я пытаюсь оживить это FrameLayout. Он имеет TextView в качестве дочернего элемента и finishHeight измеряется высотой измерения textView. Значения верны. Я также попытался вызвать textView.requestLayout() в применении преобразования, чтобы перерисовать макет, но он не работает. Он по-прежнему расширяется только иногда. Если вам нужен еще один код, не стесняйтесь спрашивать.
У меня есть расширенные области с интерактивным доступом, и он работает лучше на телефоне, но он все еще не 100%. Иногда мой телефон узнает, что я нажал на 2 элемента, и он расширяет их оба. Но я думаю, что они сейчас достаточно большие (например, 1,2 см) ... реально не знают, как сделать эту работу лучше – horin