Je souhaite afficher/masquer une fenêtre popup à l'aide d'une animation expand/collapse de this answer. J'ai été capable d'utiliser l'animation en l'appliquant à la vue popup qui est une vue à l'intérieur de popupwindow. Le problème auquel je suis confronté maintenant est que lorsque l'utilisateur touche en dehors de popupwindow, popup fenêtre automatiquement rejette et je ne peux pas montrer l'animation de repli avant de rejeter le popup.Android PopupWindow Animation Java personnalisée
Voici le code que je l'ai écrit:
View popupView = View.inflate(context,R.layout.popuplayout, null);
popup = new PopupWindow(popupView,ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
popup.setAnimationStyle(0);
popup.setOutsideTouchable(true);
popup.setFocusable(true);
popup.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popup.showAsDropDown(anchor, 0, 0);
popup.setBackgroundDrawable(null);
popupView.post(new Runnable() {
@Override
public void run() {
expand(popupView);
}
});
.
.
.
private void expand(final View v) {
final int targetHeight = ((View)v.getParent()).getHeight();
// 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
? LayoutParams.MATCH_PARENT
: (int)(targetHeight * interpolatedTime);
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
a.setDuration(200);
v.startAnimation(a);
}
Je me demandais s'il y a une façon de montrer une animation avant de rejeter pop-up en touchant l'extérieur sans style xml ou mettre en œuvre l'animation donnée en utilisant des animations xml.
Pas exactement ce que je voulais mais j'ai eu l'idée de le faire :) Merci –