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);
}