У меня есть LinearLayout (называемый макет) с высотой, как fill_parent, и начальное верхнее поле 200dp внутри RelativeLayout. Когда я нажал кнопку, я хочу, чтобы topMargin стал 0, расширяя LinearLayout. Я использую следующий код:Создать Android анимацию мягко
final RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
int topMargin = (int)((1-interpolatedTime)*200);
layoutParams.setMargins(0, topMargin, 0, 0);
layout.setLayoutParams(layoutParams);
LogThis.debug("topMargin: "+topMargin);
}
};
animation.setDuration(1000);
layout.startAnimation(animation);
Проблема заключается в том, что, хотя это делает анимацию, это не мягкий. Он выполняет преобразование в 4 шага, поэтому он выглядит не очень хорошо.
Есть ли у вас какие-либо идеи, как сделать такое преобразование мягко?
Заранее спасибо.
EDIT
У меня это в первый момент:
И после анимации я хочу это:
С TranslationAnimation я получаю это:
Это перемещает макет мягко, но это не OCUPY всего пространства. Мне нужно, чтобы он увеличивался (измените размер макета, а не изображения внутри него). – user1448668