Добавить расширяющуюся анимацию в LinearLayout? - PullRequest
0 голосов
/ 13 июня 2018

На самом деле в моем приложении, если я нажимаю на кнопку a LinearLayout, установите onCreate на "height:0", установлен на "height:630", но анимация отсутствует, и она появляетсямгновенно, так что это не приятно видеть.

Как я могу добавить к нему любую анимацию, например, когда она отскакивает или просто плавно поднимается?

Вот мой код onClick, где я установилвысота до макета

menu.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
        if(params.height == 0) {
            params.height = 630;

            recyclerContainner.setLayoutParams(params);


        }else {
            params.height = 0;
            recyclerContainner.setLayoutParams(params);

        }

    }
});

enter image description here

Я также пытался анимировать его с помощью BounceIterpolator, но он анимирует только содержимое внутри LinearLayout, а неизменение его размера

Вот его код

enter image description here

menu.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
        if(params.height == 0) {

            params.height = 630;

            recyclerContainner.setLayoutParams(params);

            BounceInterpolator bounceInterpolator = new BounceInterpolator();
            ObjectAnimator anim = ObjectAnimator.ofFloat(recyclerContainner, "translationY", 100f, 0 );
            anim.setInterpolator(bounceInterpolator);
            anim.setDuration(1100).start();


        }else {
            params.height = 0;
            recyclerContainner.setLayoutParams(params);

        }

    }
});

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я думаю, вам становится немного тяжело анимировать его при выполнении преобразования, не так ли?

Я предлагаю вам использовать эту библиотеку.

AnAndroid-библиотека, которая приносит расширяемый макет с различной анимацией.Вы можете включать дополнительное содержимое и использовать его везде.

Надеюсь, это поможет, пожалуйста, проигнорируйте, если это не ваш ответ.

0 голосов
/ 13 июня 2018

попробуйте это:

При создании набора:

recyclerContainer.animate().scaleY(0.0f).setDuration(0);

При нажатии:

recyclerContainer.animate().scaleY(1.0f).setDuration(500);

РЕДАКТИРОВАТЬ: Это требует начальной высоты recyclerContainer доиметь высоту 630 или любую другую высоту «выскочить», если начальная высота равна 0, масштабирование 0 приведет к 0:)

edit: новый код onclick:

menu.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        if(isUp) {
            recyclerContainer.animate().scaleY(0.0f).setDuration(500);
            isUp = false;
        }else {
            recyclerContainer.animate().scaleY(1.0f).setDuration(500);
            isUp = false;
        }

    }
});

где "isUp - это логическое значение, которое вы первоначально объявляете как ложное после установки scaleY в onCreate.

...