2016-06-10 15 views
0

Ich habe ein Problem, Datenbindung für die Animationsansicht zu verwenden, ohne @BindingAdapter Annotation zu verwenden. Ich möchte mit Observable-Klasse verwenden, damit ich die Animation jedes Mal starten kann. Ich habe diesen Code versucht, aber keinen Effekt für die Ansicht.Android - Datenbindung für Animationsansicht

public ObservableField<Animation> animation = 
      new ObservableField<>(AnimationUtils.loadAnimation(context, R.anim.box_bounce)); 

und das XML-Attribut:

android:layoutAnimation="@{viewModel.animation}" 

Wer kann mir bitte helfen?

Antwort

1

Schließlich fand ich eine Lösung für dieses Problem. Ich kann nicht Observable-Klasse für die Animation verwenden, aber ich kann Observable-Klasse für Boolean verwenden. Ich setze einfach wahr oder falsch, um die Animation zu starten und zu stoppen, aber ich muss die Annotation @BindingAdapter verwenden.

XML-Attribut:

<data> 

    <variable 
     name="viewModel" 
     type="com.example.MainViewModel" /> 
</data> 

<ImageView 
... 
animation="@{viewModel.isAnimation}" 
... /> 

Ansicht Modell Klasse:

public ObservableBoolean isAnimation=new ObservableBoolean(false); 

@BindingAdapter("animation") 
public static void setAnimation(ImageButton view, boolean isAnimation) { 
    if (isAnimation) { 
     Animation animation = AnimationUtils.loadAnimation(view.getContext(), R.anim.box_bounce); 
     animation.setRepeatMode(Animation.INFINITE); 
     view.startAnimation(animation); 
    } 
} 

und fange ich einfach an und stoppen Animation wie diese isAnimation.set(true); und isAnimation.set(true);

+0

könnten Sie passieren nur die R.anim.xxx Bezeichner für die benutzerdefinierte Animation der Animation und expect int als Parameter. –

Verwandte Themen