2017-05-23 1 views
2

J'ai une vue qui est invisible par défaut (Juste pour la première fois).Animer la visibilité d'une vue d'aller à visible avec animation

Maintenant je dois changer la visibilité à VISIBLE avec ce animation:

if (myView.getVisibility() == View.INVISIBLE) { 
    myView.setVisibility(View.VISIBLE); 
    myView.animate().translationY(0); 
} 

(comme l'animation par défaut SnackBar)

Mais cela ne fonctionne pas. Il deviendra visible avec l'animation par défaut

Existe-t-il un moyen simple de réaliser cela?

Remarque

J'animant mon point de vue de rejeter, comme ceci:

myView.animate().translationY(myView.getHeight()); 

Répondre

10

Vous pouvez le faire en utilisant l'animation XML.

Créer une animation slide-upXML en utilisant set et alpha et mettre ce XML dans votre dossier ressource anim.

slide_up.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <translate 
     android:duration="500" 
     android:fromYDelta="100%" 
     android:toYDelta="0" /> 
</set> 

UTILISATION:

Utilisation AnimationUtils.loadAnimation() pour charger animation de XML et programmée et commence une animation en utilisant la méthode .startAnimation().

Voici un exemple:

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

// slide-up animation 
Animation slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); 

if (imageView.getVisibility() == View.INVISIBLE) { 
    imageView.setVisibility(View.VISIBLE); 
    imageView.startAnimation(slideUp); 
} 

Espérons que cela aidera ~

+0

J'ai mis à jour ma réponse. Il montre maintenant l'animation glisser comme snackbar – FAT

+0

merci pour la réponse, votre solution fonctionne aussi, et je vais l'accepter, car il me semble plus propre. – DastakWall

+0

Content de le savoir. Si ma réponse me semble utile, veuillez donner une réponse positive. Merci d'avance – FAT

0

Basé sur this réponse:

avec ces méthodes, je peux définir la visibilité de mon point de vue à VISIBLE avec une animation de diapositive (comme animation de casse-croûte):

int getScreenHeight() { 
    DisplayMetrics displaymetrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    return displaymetrics.heightPixels; 
} 

public void animateOnScreen(View view) { 
    final int screenHeight = getScreenHeight(); 
    ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", screenHeight, (screenHeight * 0.8F)); 
    animator.setInterpolator(new DecelerateInterpolator()); 
    animator.start(); 
} 

Ensuite, je peux l'utiliser comme ceci:

if (myView.getVisibility() == View.INVISIBLE) { 
    myView.setVisibility(View.VISIBLE); 
    animateOnScreen(myView); 
    }