使用贝塞尔曲线轻松绘制动画:ToggleDrawable

jopen 9年前

ToggleDrawable

ToggleDrawable可用于使用简约,干净的API来创建一个绘制动画的过渡效果。实现依赖于贝塞尔曲线,而不是SVG图形,并低于19 API兼容。.

DEMO APK

How?

The library provides a few implementations like SearchArrowDrawable, SearchCrossDrawable or DrawerArrowDrawable:

ToggleDrawable drawable = new SearchArrowDrawable(context);  mImageView.setImageDrawable(drawable);  drawable.setProgress(...); // animate

You can easily create your own transitions by passing several Bezier curves to ToggleDrawable:

ToggleDrawable drawable = new ToggleDrawable(context);  drawable.add(<start>, <end>);  drawable.add(<start>, <end>);

Or by simpy subclassing ToggleDrawable instead:

public class MyCustomToggleDrawable extends ToggleDrawable {            public MyCustomToggleDrawable(Context context) {              super(context, 0, R.style.CustomToggleDrawableStyle);              float radius = Math.round(getIntrinsicWidth()*0.5f);                // From circle to square              add(Bezier.quadrant(radius, 0), Bezier.line(radius, radius, radius, -radius));              add(Bezier.quadrant(radius, 90), Bezier.line(-radius, radius, radius, radius));              add(Bezier.quadrant(radius, 180), Bezier.line(-radius, radius, -radius, -radius));              add(Bezier.quadrant(radius, 270), Bezier.line(-radius, -radius, radius, -radius));          }      }

Look at the sample.

Install

This repositery can be found on JitPack:

https://jitpack.io/#renaudcerrato/ToggleDrawable

Add it in your root build.gradle at the end of repositories:

allprojects {          repositories {              ...              maven { url "https://jitpack.io" }          }      }

Add the dependency:

dependencies {              compile 'com.github.renaudcerrato:ToggleDrawable:1.0.1'      }

项目地址: https://github.com/renaudcerrato/ToggleDrawable