BapNesS Posté(e) 29 juin 2012 Share Posté(e) 29 juin 2012 Bonjour, J'essaie de placer une animation dans mon activity cependant le résultat me laisse perplexe. Dans mon XML j'ai une ProgressBar en visibility=gone. J'aimerais faire apparaître cette ProgressBar en faisant une translation à partir du haut de l'écran. Ce que je fais : progressBar.setVisibility(View.VISIBLE); progressBar.startAnimation(…); Petit schéma pour visualiser le problème : https://docs.google.com/drawings/d/1UC57IIDN6d7Zg1wG4Nz4JfocgUxhYJCHlwVzMpFziK4/edit Le problème est que le setVisibility alloue la hauteur entière de la ProgressBar alors que j'aurais voulu un glissement de type tiroir (l'exemple de JQuery sur le menu de mon blog me parle) pour faire apparaître cette ProgressBar. Quelqu'un aurait une solution ? Merci. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bismuth76 Posté(e) 5 juillet 2012 Share Posté(e) 5 juillet 2012 Salut Ouais, dès que tu fais setVisibility, il affecte direct la hauteur... :/ N'y a-t-il pas moyen de faire un truc (peut-être un peu crassouillou) du genre, mettre ta progress bar dans un relative layout (en la collant sur le bas du layout) et animer la hauteur du layout ? J'ai aucune idée du comportement que ça peut avoir \o/ Bon courage ;) (et effectivement, j'ai un collègue qui a rencontré le problème sur un dev mais n'a eu le temps ni de chercher une solution, ni de faire la modif :/) A plus Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ygort Posté(e) 14 juillet 2012 Share Posté(e) 14 juillet 2012 Salut, Je suis passé par là et la solution que j'ai trouvé est de faire une animation custom dans laquelle tu set la hauteur de ton element: public class AdvertAnimation extends Animation { private View mViewAdvert; private int mTargetHeight; private boolean mIn; public AdvertAnimation(View advert, boolean in){ mViewAdvert = advert; setDuration(500); if(in) mViewAdvert.getLayoutParams().height = 0; else mTargetHeight = advert.getHeight(); mIn = in; } public void setTargetHeight(int h){ mTargetHeight = h; } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { int nHeight; if(mIn)nHeight = (int) (interpolatedTime * mTargetHeight); else nHeight = (int)((1-interpolatedTime) * mTargetHeight); mViewAdvert.getLayoutParams().height = nHeight; mViewAdvert.requestLayout(); } @Override public boolean willChangeBounds() { return true; } } J'espere que ca repond en partie a ton probleme. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
BapNesS Posté(e) 25 juillet 2012 Auteur Share Posté(e) 25 juillet 2012 Je me mets un reminder pour tester ça dès que possible. Merci d'avance. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.