【问题标题】:Android - Data Binding for Animation viewAndroid - 动画视图的数据绑定
【发布时间】:2016-06-10 08:24:43
【问题描述】:

我在不使用@BindingAdapter 注释的情况下使用动画视图的数据绑定时遇到了一些问题。我想与 Observable 类一起使用,这样我每次都可以启动动画。我已经尝试了这段代码,但对视图没有任何影响。

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

和xml属性:

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

谁能帮帮我?

【问题讨论】:

    标签: android mvvm data-binding


    【解决方案1】:

    最后,我找到了解决这个问题的方法。 我不能将 Observable 类用于动画,但我可以将 Observable 类用于布尔值。我只是设置 true 或 false 来启动和停止动画,但我必须使用 @BindingAdapter 注释。

    XML 属性:

    <data>
    
        <variable
            name="viewModel"
            type="com.example.MainViewModel" />
    </data>
    
    <ImageView
    ...
    animation="@{viewModel.isAnimation}"
    ... />
    

    查看模型类:

    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);
        }
    }
    

    我只是像isAnimation.set(true);和isAnimation.set(true);这样开始和停止动画

    【讨论】:

    • 您可以只将 R.anim.xxx 标识符传递给动画自定义绑定器,并将 int 作为参数。
    猜你喜欢
    • 2016-04-02
    • 2016-10-30
    • 2016-06-05
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多