comment puis-je afficher une mise en page au centre avec slide Up quand j'appuie sur le bouton, et appuie à nouveau pour cacher ... slideDown in Android
aidez-moi avec ça, pense
Créez deux animations xml dans le dossier 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>
Charger l'animation Comme ci-dessous Code et lancer l'animation quand vous le souhaitez En fonction de vos besoins
//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);
J'utilise ces fonctions simples, cela fonctionne comme jquery slideUp slideDown, utilisez-le dans une classe d'assistance, passez simplement votre vue:
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);
}
Cela ne fonctionne pas pour moi, je veux aimer la fonction jQuery slideUp/slideDown, j'ai essayé ce code, mais il ne fait que déplacer le contenu qui reste au même endroit après la fin de l'animation, la vue devrait avoir une hauteur de 0dp au début de slideDown et la hauteur de vue (avec wrap_content) après la fin de l'animation.
J'avais une exigence similaire dans l'application sur laquelle je travaille. Et, j'ai trouvé une bibliothèque tierce qui fait glisser, glisser et glisser vers la droite dans Android.
Reportez-vous au lien pour plus de détails: https://github.com/mancj/SlideUp-Android
Pour configurer la bibliothèque (copiée à la demande à partir de la partie Lisez-moi de sa page Github):
Récupère la bibliothèque SlideUp
Ajoutez le référentiel JitPack à votre fichier de construction. Ajoutez-le dans votre racine build.gradle à la fin des référentiels:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
maven { url "https://maven.google.com" } // or google() in AS 3.0
}
}
Ajoutez la dépendance (dans la palette Module)
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
}
Pour ajouter le SlideUp à votre projet, suivez ces trois étapes simples:
Étape 1:
créer tout type de mise en page
<LinearLayout
Android:id="@+id/slideView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"/>
Étape 2:
Trouver cette vue dans votre activité/fragment
View slideView = findViewById(R.id.slideView);
Étape 3:
Créer un objet SlideUp et passer dans votre vue
slideUp = new SlideUpBuilder(slideView)
.withStartState(SlideUp.State.HIDDEN)
.withStartGravity(Gravity.BOTTOM)
//.withSlideFromOtherView(anotherView)
//.withGesturesEnabled()
//.withHideSoftInputWhenDisplayed()
//.withInterpolator()
//.withAutoSlideDuration()
//.withLoggingEnabled()
//.withTouchableAreaPx()
//.withTouchableAreaDp()
//.withListeners()
//.withSavedState()
.build();
Vous pouvez également vous référer à l'exemple de projet sur le lien. Je l'ai trouvé assez utile.