时间:2021-05-20
Android开发中,在自定义view中,使用Canvas的相应操作,实现类似签名的画板,但有一个问题则是,正常的Canvas操作可以用画板对手机的滑动进行绘制,但是当遇到一些圆滑曲线时,会显得不够顺滑,甚至有折角,这里可以使用二阶beizer曲线来使得曲线更加圆滑,提升用户体验。
定义一个自定义SignView,继承自View,在里面定义四个变量:
private Path mPath;private Paint mPaint;private float mX;private float mY;在构造方法里对路径和画笔进行初始化:
public SignView(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10); mPath = new Path();}在onDraw()中对canvas做操作,这里值得一提的是调用drawColor方法,不然最终如果保存为本地图片的话,会使得背景为黑色,如果画笔也选择黑色的话,则会成一张全黑的图片:
@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); canvas.drawPath(mPath, mPaint);}接下来重写onTouchEvent方法:
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mX = event.getX(); mY = event.getY(); mPath.moveTo(mX, mY); break; case MotionEvent.ACTION_MOVE: float x1 = event.getX(); float y1 = event.getY(); float cx = (x1 + mX) / 2; float cy = (y1 + mY) / 2; mPath.quadTo(mX, mY, cx, cy); mX = x1; mY = y1; break; } invalidate(); return true; }手指按下时,取得按下的坐标,移动的时候,得到当前左边,且取两点中间的cx,cy作为beizer曲线的控制点,然后调用quadTo方法绘制二阶beizer曲线,进行连线操作,最终则是调用invalidate方法进行重绘。
这样一个使连线更加圆滑的画板控件简单实现了,如果需要保存为本地,或者bitmap对象,则需要做其他一些额外的操作了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用wps演示制作唯美动感封面。1、首先将背景设置成黑色。2、然后是插入-形状-曲线,画好曲线,填充为金色的渐变色,并调整宽度,利用编辑顶点,使曲线更圆滑。3、复
Android屏幕手写签名的原理就是把手机屏幕当作画板,把用户手指当作画笔,手指在屏幕上在屏幕上划来划去,屏幕就会显示手指的移动轨迹,就像画笔在画板上写字一样。
你是否知道在几何画板中怎样构造曲线系?下面就分享一下在几何画板中构造曲线系的详细方法哦,下面我们就一起去学习学习吧。 具体步骤如下: 1.构造线段。利用“
一台边框更圆滑的iPadmini,这是荷兰知名设计师MartinHajek带来的最新作品。最近我们看到了大量的iPhone6谍照,而这些谍照基本上都显示的是
本文实例为大家分享了Android画画板展示的具体代码,供大家参考,具体内容如下main.xml布局main布局/*画板canvas画板paint手势识别器整体