Path是自定义控件中非常重要的一部分,上一篇闲聊自定义控件之基础——Path中介绍了Path相关的基础知识,今天通过一个滑雪的demo,演示下Path相关API的使用。
该demo用到的Path的知识点主要有贝塞尔曲线、Path逻辑运算、PathMeasure等,这些都是常用的,而且比较重要的知识点。
闲话少说,先看效果图:
1.首先是初始化的操作
private void init() {
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mPaint.setStyle(Paint.Style.FILL);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.snow_boarding, options);
pos = new float[2];
tan = new float[2];
mMatrix = new Matrix();
mSnowPath = new Path();
mBottomPath = new Path();
mPathMeasure = new PathMeasure();
}
主要是设置画笔,获取图片(滑雪的小人),创建了两个path,一个是上端曲线,一个是下端用于封闭路径的,还有一个PathMeasure,用于获取对应点坐标以及其它信息。
需要注意的是之所以设置两个path,是因为图片只在上面曲线滑动,可以将上面的曲线作为一个单独的path,剩下的作为一个path,然后通过逻辑运算来完成。