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

Paste_Image.png

使用说明:
In your module

Download

compile ‘com.github.florent37:expectanim:1.0.0’

1487837691109726.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();

跟随滚动

1487837571137039.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)

            )

下载地址
https://github.com/florent37/ExpectAnim

IT文库 » 把属性动画封装成链式调用的形式。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址