ExpectAnim

介绍:

把属性动画封装成链式调用的形式。

运行效果:

使用说明:

In your module Download

compile 'com.github.florent37:expectanim:1.0.0'

sample (2).gif

上面动画的代码:

new ExpectAnim()
                .expect(avatar)
                .toBe(
                        bottomOfParent().withMarginDp(16),
                        leftOfParent().withMarginDp(16),
                        width(40).toDp().keepRatio()
                )
                .expect(name)
                .toBe(
                        toRightOf(avatar).withMarginDp(16),
                        sameCenterVerticalAs(avatar),
                        toHaveTextColor(Color.WHITE)
                )
                .expect(subname)
                .toBe(
                        toRightOf(name).withMarginDp(5),
                        sameCenterVerticalAs(name),
                        toHaveTextColor(Color.WHITE)
                )
                .expect(follow)
                .toBe(
                        rightOfParent().withMarginDp(4),
                        bottomOfParent().withMarginDp(12),
                        toHaveBackgroundAlpha(0f)
                )
                .expect(message)
                .toBe(
                        aboveOf(follow).withMarginDp(4),
                        rightOfParent().withMarginDp(4),
                        toHaveBackgroundAlpha(0f)
                )
                .expect(bottomLayout)
                .toBe(
                        atHisOriginalPosition()
                )
                .expect(content)
                .toBe(
                        atHisOriginalPosition(),
                        visible()
                )
                .toAnimation()
                .setDuration(1500)
                .start();

跟随滚动

scroll.gif

使用setPercent来设置动画当前的进度

this.expectAnimMove = new ExpectAnim()
                .expect(username)
                .toBe(
                        toRightOf(avatar).withMarginDp(16),
                        sameCenterVerticalAs(avatar),
                        alpha(0.5f)
                )
                .expect(avatar)
                .toBe(
                        topOfParent(),
                        leftOfParent().withMarginDp(16),
                        scale(0.5f, 0.5f)
                )
                .expect(follow)
                .toBe(
                        rightOfParent().withMarginDp(16),
                        sameCenterVerticalAs(avatar)
                )
                .expect(backbground)
                .toBe(
                        height(height).withGravity(Gravity.LEFT, Gravity.TOP)
                )
                .toAnimation();
scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        final float percent = (scrollY * 1f) / v.getMaxScrollAmount();
        expectAnimMove.setPercent(percent);
    }
});

直接应用动画

使用setNow直接开始动画

new ExpectAnim()
                .expect(view)
                .toBe(
                        outOfScreen(Gravity.BOTTOM)
                )
                .toAnimation()
                .setNow();

所有的expectation

new ExpectAnim()
                .expect(view)
                .toBe(
                    //.withMargin(marginPx)
                    //.withMarginDp(margin)
                    //.withMarginDimen(R.dimen.margin)
                    toRightOf(view)
                    toLeftOf(view)
                    belowOf(view)
                    aboveOf(view)
                    atHisOriginalPosition()
                    sameCenterAs(view, horizontal, vertical)
                    sameCenterHorizontalAs(view)
                    sameCenterVerticalAs(view)
                    centerInParent(horizontal, vertical)
                    centerVerticalInParent()
                    centerHorizontalInParent()
                    centerBetweenViews(view1, view2, horizontal, vertical)
                    centerBetweenViewAndParent(otherView, horizontal, vertical, toBeOnRight, toBeOnBottom)
                    topOfParent()
                    rightOfParent()
                    bottomOfParent()
                    leftOfParent()
                    alignBottom(otherView)
                    alignTop(otherView)
                    alignLeft(otherView)
                    alignRight(otherView)
                    outOfScreen(gravitiy)  //Gravity.LEFT / Gravity.RIGHT / Gravity.TOP / Gravity.BOTTOM
                    alpha(alpha)
                    sameAlphaAs(otherView)
                    visible()
                    invisible()
                    //.keepRatio()
                    //.withGravity(horizontalGravity, verticalGravity)
                    atHisOriginalScale()
                    scale(scaleX, scaleY)
                    height(height)
                    width(width)
                    sameScaleAs(otherView)
                    sameWidthAs(otherView)
                    sameHeightAs(otherView)
                    toHaveTextColor(textColor)
                    toHaveBackgroundAlpha(alpha)
                )
已下载
0