Android 使用贝塞尔和PathMeasure绘画心形路径
来源:互联网 发布:淘宝美工的营销手段 编辑:程序博客网 时间:2024/05/21 09:19
效果图如下:
有时候我们需要绘画一些复杂的路径,就需要用到贝塞尔曲线
同时,我们希望展示绘画过程,就需要用到PathMeasure
下面就是一个简单的例子。
public class HeartView extends View { public HeartView(Context context) { super(context); } private Paint paint; private ValueAnimator av; private float mLength; private PathMeasure pm; private Path mPath; public HeartView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } private void init() { paint =new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); //-------------这里是绘制心形,大家可以自己画任何曲线--------------------------- mPath = new Path(); mPath.moveTo(396-50,313); mPath.cubicTo(207-50,114, 339-50,46, 396-50,111); mPath.cubicTo(453-50, 46,585-50, 114,396-50,313); //---------------------------------------------- pm =new PathMeasure(mPath,false);//false表示是否强制闭合路径 av = ValueAnimator.ofFloat(0,pm.getLength()); av.setDuration(5000); av.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mLength= (float) animation.getAnimatedValue(); invalidate(); } }); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } public HeartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); Path path = new Path(); //path.reset(); //这里需要lineTo才会绘画图像,据说是openGl的一个BUG path.lineTo(0,0); //这个方法的意思是取路径片段,0是指从头截取,mLength是指截取的长度 pm.getSegment(0,mLength,path,true); canvas.drawPath(path,paint); // canvas.drawPath(mPath,paint); canvas.restore(); } public void start() { av.start(); }}
简单明了,就不多做解释咯。
---仅作备份,方便以后查阅--
阅读全文
0 0
- Android 使用贝塞尔和PathMeasure绘画心形路径
- Android PathMeasure使用
- Android PathMeasure的使用详解
- Android 中PathMeasure的使用
- android Path 和 PathMeasure 进阶
- 使用贝塞尔曲线和Pathmeasure画粘连体
- Android使用PathMeasure实现加载动画
- Android Path和PathMeasure类的使用之获取圆弧上的坐标值
- Android:使用PathMeasure绘制动画效果的搜索按钮
- Android Path,PathMeasure
- Android Path 之 PathMeasure
- PathMeasure的基本使用
- Android 绘画
- Android百日程序:绘画程序-画手指路径
- PathMeasure
- PathMeasure
- PathMeasure
- PathMeasure
- 区块链中的数学思想概述
- STM32读写TXT文件(可追加数据)的示例代码
- Android学习——在线查看android源代码的3种方式
- Minimum Depth of Binary Tree
- “不能打开文件mk:@*.chm”怎么办?——提供一种windows7上打不开chm的解决方法
- Android 使用贝塞尔和PathMeasure绘画心形路径
- 转测试小结
- C++ 线程池
- 66. Plus One
- Git 命令的使用
- 深度学习笔记——深度学习框架TensorFlow(三)
- 学习15:apt-get install重新安装MRPT
- EMMA简单用法
- window下查看端口号被占用以及结束此进程的方法