使用贝塞尔曲线轻松绘制动画:ToggleDrawable
jopen
9年前
ToggleDrawable
ToggleDrawable可用于使用简约,干净的API来创建一个绘制动画的过渡效果。实现依赖于贝塞尔曲线,而不是SVG图形,并低于19 API兼容。.
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' }