当前位置:  开发笔记 > 编程语言 > 正文

Android数据绑定和动画

如何解决《Android数据绑定和动画》经验,为你挑选了1个好方法。

有人能指出我在使用数据绑定时如何触发动画的方向吗?

我有一个图标,根据我的viewmodel中的数据更改.当视图模型更改时(即,视图模型中的属性发生更改时),如何为图标更改设置动画?



1> Andre Classe..:

一种可能的解决方案是使用绑定适配器.这是一个快速示例,向您展示如何前进:

首先,我们定义自定义绑定适配器:

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(createAnimation());
        } else if (animation != null) {
            animation.cancel();
            view.setAnimation(null);
        }
    }

    private static Animation createAnimation() {
        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;

    }
}

示例布局如下所示:



    
        
    

    
        

    

如您所见,您的viemodel的'isBusy'属性绑定到视图(imagebutton).您可以在任何视图中使用此适配器,而不仅仅是在图像按钮上.

当然,'isBusy'属性必须是可绑定的(例如,你的viewmodel扩展了BaseObservable或者至少它是一个ObservableBoolean).

因此,每当您将'isBusy'属性更改为true时,它将触发动画启动.将其设置为false,它将停止.

希望这可以帮助 ?

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有