下一篇-> -> ->使用popupWindow 弹框显示画板 <- <- <-
有一个bug 存在。保存路径的过程出错了。有些手机是可以进行的。后续更改保存路径问题。(已修改,见最后)
一、怎么画??
1、首先我们需要一个view在进行绘制我们的内容,那么创建一个类来继承view,
你需要画画,那你需要什么共工具??画布,画笔
1、canvas--在我的理解,虚拟化的一个画布区域
2、paint
那你用什么东西来垫画布??
3、bitmap 相当于正真的吧东西画到纸上一样
2、初始化我们需要的view以及方法
自己手打吧骚年,那样才有影响,cv模式记不清的
实现view的3个构造方法
intiview
然后在 onsizeChanged 吧bitmap 和canvas 给搞上去
这段的意思是 onsizechange 当view的大小改变的时候 ,进行相应的操作
bitmap.careBitmap 创建一个与view一样大小的画布
canvas(canvasBitmap)
3、开画
ondraw方法,肯定就是用来画画的啦,不要在意注释的东西,哈哈
画布能画东西,那怎么样也得有一只能画画的手吧;
走起,搞一双+(*)鹰之手
onTouchEven()
按下去的时候记录坐标
按下时的操作
先清空之前的画笔 reset
开始画,moveto(x,y)
更换动作的时候记录最后的位置,这里你要明白,点下去 就是down的操作,手指一旦移动就不是down啦,
分清楚。所以在down操作之后要记住按住屏幕时的坐标
移动时的操作
quadto(),画出贝塞尔曲线
你也可以试一试lintTo时怎样的
手指抬起的时候
完整的onTouchEvent
搞定、画画的部分就到这了,结束???不存在的。
是不是不一样,你会发现使用上面我提供的方法你会画出按钮下面那个路径,并不是很圆滑
让我们改一改,升级一下画画的手
升级完毕,这是让曲线更加的圆滑
二、怎么保存?
扔上去就搞定啦,至于路径怎么搞,百度一下就有了嘛是吧。google一下就行了嘛是吧。
你运行一下啊代码你会发现,坑爹,报错了=-=
是不是这个错啊,一般就就是 一个空指针
就是这里,把我坑了好久的问题,为毛空??加一个static 就搞定了
private static Bitmap canvasBitmap;
原因我也不知道?那怎么办??我要好好研究啊~~~
bug修改在机子上无法正确保存路径
我们在view里头修改:
原本:
修改后
在调用的save()方法的activity/fragment/等等 修改:
String pathName = Environment.getExternalStorageDirectory().getAbsolutePath(); Log.d("path", "writeFileData: " + Environment.getExternalStorageDirectory()); File savefile = new File(pathName, "test"); if (!savefile.exists()) { savefile.mkdir(); }
先创建一个file来存储我们要保存的图片。
pathname 存储的地址就是/stroage/sdcard/test
可以看见都是存在的,创建完成之后我们在把我们的文件下的图片给个名字
String pathNmae =savefile.getPath()+ "/"+String.valueOf(System.currentTimeMillis())+".png";
最后我们吧pathName传进去就可以了。
mLinePathView.save(pathNmae, true, 10);
最后效果图如下