Как установить ширину моего вида LayoutParams меньше? - PullRequest
1 голос
/ 14 февраля 2012

Привет, я одалживаю Найден метод Сета здесь для анимации моих viewGroups.Это прекрасно работает, но в неправильном направлении - я впервые использую / расширяю класс Animation, и я не могу понять, как уменьшить размер моего представления. Это расширяет его.

Ниже приведен класс и как я его использую.Любая помощь будет принята с благодарностью.

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 Ответ

0 голосов
/ 15 февраля 2012

Я думаю, что вы перепутали использование этого третьего параметра (логического). Вы называете это «открытым» и передаете это как истину, потому что хотите уменьшить его. Тем не менее, это противоположно использованию в моем исходном коде! В моем коде логическое значение было истинным, если представление было закрыто , но я хотел, чтобы оно росло .

"и d = логическое значение, которое указывает направление (true = расширение, false = сворачивание)."

Если вы поменяете условие в классе анимации на if (! Open) {}, оно должно работать. Или передать это ложь вместо истины. Или передайте значение true, но измените переменную на «закрыто» вместо «открыто».

-Seth

...