ExpectAnim is a Android Kotlin library which give you support to describe your animation and run with Materialize design. If you’re not familiar with this new Android official language then you can see my some previous post:
Now come with this cool library and firstly you must see the demo which is given above:
How to implement ExpectAnim in your application
In your module
Maven
<dependency> <groupId>com.github.florent37</groupId> <artifactId>expectanim</artifactId> <version>1.0.3</version> <type>pom</type> </dependency>
Gradle
compile 'com.github.florent37:expectanim:1.0.3'
Ivy
<dependency org='com.github.florent37' name='expectanim' rev='1.0.3'> <artifact name='expectanim' ext='pom' /> </dependency>
This code describe the image above
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( atItsOriginalPosition() ) .expect(content) .toBe( atItsOriginalPosition(), visible() ) .toAnimation() .setDuration(1500) .start();
Follow scroll
Use setPercent
to apply modify the current step of the animation
Example with a ScrollView
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.START, 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); } });
Apply directly
Use setNow
to apply directly the transformation
new ExpectAnim() .expect(view) .toBe( outOfScreen(Gravity.BOTTOM) ) .toAnimation() .setNow();
Reset
Use reset
to return to the initial state of views
expectAnim.reset():
List of expectations
new ExpectAnim() .expect(view) .toBe( //.withMargin(marginPx) //.withMarginDp(margin) //.withMarginDimen(R.dimen.margin) toRightOf(view) toLeftOf(view) belowOf(view) aboveOf(view) atItsOriginalPosition() 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) atItsOriginalScale() scale(scaleX, scaleY) height(height) width(width) sameScaleAs(otherView) sameWidthAs(otherView) sameHeightAs(otherView) toHaveTextColor(textColor) toHaveBackgroundAlpha(alpha) rotated(rotation) vertical(bottomOfViewAtLeft) atItsOriginalRotation() )
Proguard
-keep class com.github.florent37.expectanim.*{ *; } -dontwarn com.github.florent37.expectanim.**
Changelog
In version 1.0.1, it added rotations
In version 1.0.2 , Added flips
rotations
flippedHorizontally()
flippedVertically()
flippedHorizontallyAndVertically()
withCameraDistance(1000f)
And in latest version, it added Alpha 0 force view to be INVISIBLE`
Download
Hope you like this tutorial!!
Share your thoughts