Как настроить внешний вид LayoutParams Width Lesser?
Привет, я заимствую метод Seth, который нашел здесь, чтобы анимировать мои группы представлений. Он отлично работает, но в неправильном направлении. Это мой первый опыт использования/расширения класса анимации, и я не могу понять, как уменьшить размер моего представления. Это расширяет его.
Ниже приведен класс и как я его использую. Любая помощь будет принята с благодарностью.
public class ContainerAnim extends Animation {
int targetWidth;
View view;
boolean opened;
public ContainerAnim(View v, int targetWidth, boolean opened) {
this.view = v;
this.targetWidth = targetWidth;
this.opened = opened;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int newWidth;
if (opened) {
newWidth = (int) (targetWidth * interpolatedTime);
} else {
newWidth = (int) (targetWidth * (1 - interpolatedTime));
}
view.getLayoutParams().width = newWidth;
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;
}
}
Использование:
... case R.id.menu_shrink:
FragmentTransaction ft = getFragmentManager().beginTransaction();
FrameLayout frame = (FrameLayout) findViewById(R.id.listFragment_container);
ContainerAnim set = new ContainerAnim(frame, 100, true);
set.setDuration(200);
LayoutAnimationController c = new LayoutAnimationController(set,
0.25f);
frame.setLayoutAnimation(c);
frame.startLayoutAnimation();
ft.commit();
...
Ответы
Ответ 1
Я думаю, вы перепутали использование этого третьего параметра (логического). Вы называете это "открытым" и передаете это правду, потому что хотите его сжать. Однако это противоречит использованию в моем исходном коде! В моем коде логическое значение было истинным, если представление было закрыто, но я хотел, чтобы он расти.
"и d = a boolean, который определяет направление (true = expand, false = collapsing).
Если вы замените условие в классе анимации на if (! open) {}, оно должно работать. Или передайте значение false вместо true. Или передайте это правду, но замените переменную на "закрытую", а не "открытую".
-Seth