使Android动画更加坚实且有凝聚力 - RxAnimations

2016-12-20      397      Android
项目简介 前往项目首页

RxAnimations

RxAnimations是一个使Android动画更加坚实且有凝聚力的库。

Download

compile 'oxim.digital:rxanim:0.8.2'

  compile 'io.reactivex:rxandroid:1.2.1'

RxAnimations库目前只兼容rxJava 1.

使用方法

示例项目提供了代码示例,证明这个项目中类的用法可以在sample-app/ 文件夹中获取。

这个库的真正能力是将动画作为一个可观察的异步动作来展现。

这可以让我们在动画中应用常规rxJava API。

它提供了几个类,比如RxValueAnimator , RxObservableValueAnimator和RxAnimationBuilder

示例:

  • 多个视图一起动画
animateTogether(fadeIn(firstView),
                        fadeIn(secondView));
  • 无缝链接多个动画
fadeIn(firstView)
            .concatWith(fadeIn(secondView));
  • 结合RxValueAnimator的简单ValueAnimaor使用方法
final ValueAnimator opacityAnimator = ValueAnimator.ofFloat(0.f, 1.f);
        RxValueAnimator.from(opacityAnimator, animator -> view.setAlpha((float)animator.getAnimatedValue()))
  • 使用RxObservableValueAnimator的一起动画多个值
xObservableAnimator = RxObservableValueAnimator.from(xAnimator);
        yObservableAnimator = RxObservableValueAnimator.from(yAnimator);

        Observable.combineLatest(xObservableAnimator.schedule(),
                                 yObservableAnimator.schedule(),
                                 (first, second) -> new Pair(first, second))
                  .subscribe(this::updateView);
  • 使用RxAnimationBuilder定义自定义动画
RxAnimationBuilder.animate(view, DURATION)
                          .interpolator(INTERPOLATOR)
                          .fadeIn()
                          .rotate(DEGREES)
                          .translateBy(X, Y)
                          ...
                          .schedule([ | false]);