转载请注明出处:王亟亟的大牛之路
上周5因为要出去玩所以礼拜4基本没干活然后写了个垃圾桶的demo觉得蛮好玩的,准备做的深一点,但是文章还是一篇一篇发,省的有些小伙伴搞不清楚实现
还是先安利,地址如下:https://github.com/ddwhan0123/Useful-Open-Source-Android 最近把Rx和下拉刷新做了细分,方便大家查”裤”
先看下运行效果
就是一个垃圾桶然后用户点击按钮之后 盖子盖上去(可以用到项目里那种拖动到垃圾桶删除的效果)
首先讲下实现思路
首先我在https://icomoon.io/app/#/select里找了个垃圾桶的icon然后照着那个样子考虑我该怎么画(这网站还是不错的,不过现在都用iconfont了吧?)
因为 垃圾桶的桶身部分是不需要动画的,所以就先画桶身再画桶盖,桶盖用ValueAnimator
解决旋转问题就好了
知识点
要画自定义控件,首先要知道view的绘画流程,具体理论知识就不说了以前说过,这里再点下
要自定义View 你要先实现onMeasure
再是onDraw
onMeasure决定尺寸 onDraw决定具体ui展现
如果你是viewgroup的话还需要再实现onLayout
来操作子视图间的位置关系
安卓的坐标系,跟我们数学的数轴不太一样,数轴有4个象限,而安卓只有一个。
屏幕左上角为(0,0)点,那右下角必然是最大点了。
越向右 x越大,越向下y越大。
ok,简单的道理讲完了,就开始贴代码看吧
代码实现
public class GabageCan extends View {
private Paint paint;
private Path path;
private int viewWidth, viewHeight, picWidth, picHeight;
private Float canBAnimProgress;
private ValueAnimator animator;
public GabageCan(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public GabageCan(Context context) {
super(context);
init();
}
@Override