Connexion et animation de bases de données Android

Quelqu'un peut-il me diriger vers la façon de déclencher une animation lors de l'utilisation de la liaison de données?

J'ai une icône qui change selon les données de mon modèle de vision. Comment animer l'icône change-t-il lorsque le modèle de vision change (c'est-à-dire lorsqu'une propriété change dans le modèle de vue)?

  • Mettre les valeurs ENUM sur Android?
  • Machine qui peut transformer le téléphone en 90 degrés toutes les quelques secondes?
  • Mise en œuvre de l'effet Ripple à l'extérieur de ImageButton
  • NoSuchMethodError si j'utilise okhttp 2.0 et la dernière mise à niveau?
  • Vous recherchez le code source des nouvelles widgets Google Calendar Time et Picker de date
  • Comment puis-je ajouter le rembourrage à un bitmap et une couleur dans une liste de couches
  • One Solution collect form web for “Connexion et animation de bases de données Android”

    Une solution possible consiste à utiliser un adaptateur de liaison. Voici un échantillon rapide pour vous montrer le chemin à parcourir:

    Nous définissons d'abord un adaptateur de liaison personnalisé:

    import android.databinding.BindingAdapter; import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.view.View; import android.view.animation.Animation; import android.view.animation.Interpolator; import android.view.animation.RotateAnimation; import android.view.animation.TranslateAnimation; public class ViewBusyBindings { private static final Interpolator INTERPOLATOR = new FastOutSlowInInterpolator(); @BindingAdapter("isBusy") public static void setIsBusy(View view, boolean isBusy) { Animation animation = view.getAnimation(); if (isBusy && animation == null) { view.startAnimation(getAnimation()); } else if (animation != null) { animation.cancel(); view.setAnimation(null); } } private static Animation getAnimation() { RotateAnimation anim = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); anim.setInterpolator(INTERPOLATOR); anim.setDuration(1400); anim.setRepeatCount(TranslateAnimation.INFINITE); anim.setRepeatMode(TranslateAnimation.RESTART); return anim; } } 

    La disposition des exemples ressemblera à ceci:

     <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <variable name="vm" type="de.example.exampleviewmodel"/> </data> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/btnPlay" style="?attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|bottom" android:src="@drawable/ic_play_circle_filled_white_36dp" app:isBusy="@{vm.isBusy}"/> </FrameLayout> </layout> 

    Comme vous pouvez le voir, la propriété 'isBusy' de votre viemodel est liée à la vue (imagebutton). Vous pouvez utiliser cet adaptateur à n'importe quelle vue non seulement sur un bouton d'image.

    Bien sûr, la propriété 'isBusy' doit être liable (par exemple, votre modèle de vision étend le BaseObservable ou, au minimum, c'est un ObservableBoolean).

    Donc, chaque fois que vous modifiez la propriété 'isBusy' sur true, elle déclenchera l'animation. Réglez-le sur faux, il s'arrête.

    J'espère que cela t'aides ?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.