这里没有废话之先上效果图。
down.gifup.gif
这里没有废话之思路描述
1.两点确定一个矩形
2.根据子view 的顶点确定运动轨迹Path
3.跟着轨迹High起来
备注
如果你希望矩形边框在子View下面,请给View设置背景色或其他让ViewGroup执行onDraw的黑科技。
这里没有废话之核心代码
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
Log.i("fx", "dispatchDraw");
// canvas.drawPath(path, paint); //这里在上层
// path.reset();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.i("fx", "onDraw");
canvas.drawPath(path, paint);//这里在下层
path.reset();
float a = 0, b = 0, c = 0, d = 0;
for (int i = 0; i < paths.length; i++) {
pathMeasure.setPath(paths[i], false);
pathMeasure.getPosTan(pathMeasure.getLength() * offset, pos, tan);
switch (i) {
case 0:
path.moveTo(pos[0], pos[1]);
tem[0] = pos[0];
tem[1] = pos[1];
a = pos[0];
b = pos[1];
break;
case 1:
case 2:
c = pos[0];
d = pos[1];
case 3:
// path.lineTo(pos[0], pos[1]);
break;
}
path.addRect(a, b, c, d, Path.Direction.CW);
// path.close();
// canvas.drawCircle(tem[0],tem[1],20,paint);
// canvas.drawPath(paths[i],paint);
}
}
网友评论