android animation slidedown slideup

android - Diseño deslizable y deslizable con animación



animation slidedown (4)

¿Cómo puedo mostrar un diseño en el centro con slideUp cuando presiono el botón, y presionar de nuevo para ocultar ... slideDown en ANDROID

ayúdame con eso, gracias


Crea dos animaciones xml en la carpeta res / anim

slide_down.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1000" android:fromYDelta="0" android:toYDelta="100%" /> </set>

slide_up.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1000" android:fromYDelta="100%" android:toYDelta="0" /> </set>

Cargar animación como el siguiente Código y comenzar la animación cuando lo desee De acuerdo con su Requisito

//Load animation Animation slide_down = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down); Animation slide_up = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up); // Start animation linear_layout.startAnimation(slide_down);


Esto no funciona para mí, quiero que me guste la función jquery slideUp / slideDown, probé este código, pero solo mueve el contenido que permanece en el mismo lugar después del final de la animación, la vista debe tener una altura de 0dp al inicio de slideDown y la altura de la vista (con wrap_content) después del final de la animación.


Tenía un requisito similar en la aplicación en la que estoy trabajando. Y encontré una biblioteca de terceros que se desliza hacia arriba, hacia abajo y hacia la derecha en Android.

Consulte el enlace para obtener más detalles: https://github.com/mancj/SlideUp-Android

Para configurar la biblioteca (copiada de la parte Léame de su página Github a petición):

Obtener la biblioteca SlideUp

Agregue el repositorio JitPack a su archivo de compilación. Agréguelo en su build.gradle raíz al final de los repositorios:

allprojects { repositories { ... maven { url ''https://jitpack.io'' } maven { url "https://maven.google.com" } // or google() in AS 3.0 } }

Agregue la dependencia (en el Módulo gradle)

dependencies { compile ''com.github.mancj:SlideUp-Android:2.2.1'' compile ''ru.ztrap:RxSlideUp2:2.x.x'' //optional, for reactive listeners based on RxJava-2 compile ''ru.ztrap:RxSlideUp:1.x.x'' //optional, for reactive listeners based on RxJava }

Para agregar SlideUp a su proyecto, siga estos tres sencillos pasos:

Paso 1:

crea cualquier tipo de diseño

<LinearLayout android:id="@+id/slideView" android:layout_width="match_parent" android:layout_height="match_parent"/>

Paso 2:

Encuentra esa vista en tu actividad / fragmento

View slideView = findViewById(R.id.slideView);

Paso 3:

Crea un objeto SlideUp y pasa en tu vista

slideUp = new SlideUpBuilder(slideView) .withStartState(SlideUp.State.HIDDEN) .withStartGravity(Gravity.BOTTOM) //.withSlideFromOtherView(anotherView) //.withGesturesEnabled() //.withHideSoftInputWhenDisplayed() //.withInterpolator() //.withAutoSlideDuration() //.withLoggingEnabled() //.withTouchableAreaPx() //.withTouchableAreaDp() //.withListeners() //.withSavedState() .build();

También puede consultar el proyecto de muestra en el enlace. Lo encontré bastante útil.


Uso estas funciones sencillas, funciona como jquery slideUp slideDown, úsala en una clase auxiliar, solo pasa tu vista:

public static void expand(final View v) { v.measure(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); final int targetHeight = v.getMeasuredHeight(); // Older versions of android (pre API 21) cancel animations for views with a height of 0. v.getLayoutParams().height = 1; v.setVisibility(View.VISIBLE); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { v.getLayoutParams().height = interpolatedTime == 1 ? WindowManager.LayoutParams.WRAP_CONTENT : (int)(targetHeight * interpolatedTime); v.requestLayout(); } @Override public boolean willChangeBounds() { return true; } }; // 1dp/ms a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density)); v.startAnimation(a); } public static void collapse(final View v) { final int initialHeight = v.getMeasuredHeight(); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { if(interpolatedTime == 1){ v.setVisibility(View.GONE); }else{ v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime); v.requestLayout(); } } @Override public boolean willChangeBounds() { return true; } }; // 1dp/ms a.setDuration((int)(initialHeight / v.getContext().getResources().getDisplayMetrics().density)); v.startAnimation(a); }