2017-10-18 7 views
0

J'ai, en mode design, placé une vue juste à l'extérieur de la limite droite de l'écran de l'appareil Android. Je veux jouer une animation et la déplacer de l'extérieur de l'écran vers l'écran pour faire un effet d'entrée, rien d'extraordinaire.Dans le deltaX d'une animation Android, devrais-je utiliser des pixels ou un pourcentage?

Cependant, je me bats avec les paramètres deltaX depuis. Quels sont les nombres corrects à poser? Dois-je aller avec des pixels ou en pourcentage?

Lorsque je donne la bonne entrée, l'événement correct a été déclenché mais la vue est introuvable, elle n'apparaît pas du tout sur l'écran.

Voici mon code problématique:

Animation:

<?xml version="1.0" encoding="utf-8"?> 
<set 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/linear_interpolator" 
android:fillAfter="true"> 

<translate 
    android:fromXDelta="100%" 
    android:toXDelta="0%" 
    android:duration="300" /> 
</set> 

La vue en question:

<GridView 
    android:id="@+id/android_gridview_menu" 
    android:layout_width="80dp" 
    android:layout_height="0dp" 
    android:background="#ffffff" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.0" 
    app:layout_constraintLeft_toRightOf="@+id/MainUI" 
    android:layout_marginLeft="0dp"> 

Répondre

0

Pour jouer une utilisation animation Animation et AnimationUtils.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), 
      R.anim.animation); // R.anim.animation is your animation xml. 

    GridView layout = (GridView) findViewById(R.id.android_gridview_menu); 
    layout.startAnimation(animation); 
} 

Espérons que ça aide!

0

tout d'abord traduire le point de vue de la grille de l'écran, puis jouer l'animation

// Translating grid view out of the screen 
GridView gridView = findViewById(R.id.android_gridview_menu); 
Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
gridView.setTranslationX(size.x); 


// Call this method to bring grid view from right by animation 
private void playEnterAnimation(){ 
    GridView gridView = findViewById(R.id.android_gridview_menu); 
    gridView.animate().translationX(0).setDuration(200).setInterpolator(new AccelerateDecelerateInterpolator()).start(); 
} 
+0

n'a pas vraiment travailler, je crois en utilisant le fichier de ressources anime est plus raisonnable. – VictorCharlie23

+0

Cette méthode playEnterAnimation() ne fonctionne que lorsque vous traduisez d'abord la vue hors de l'écran en utilisant le code // Affichage de la grille de traduction hors de l'écran GridView gridView = findViewById (R.id.android_gridview_menu); Afficher l'affichage = getWindowManager(). GetDefaultDisplay(); Taille du point = new Point(); display.getSize (taille); gridView.setTranslationX (size.x); –