参考了网上的很多代码,做的挺不错。就是不能拖动、延长、缩短···
所以我自己努力,将他们加上。
现在分享给大家。
---------------------------------------------------------------------------------------------------------
有两种实现方式。
第一种实现方式:
一个主view类(一个自定义view),在主view类中定义了统一的paint、bitmap、canvas,以及子类中需要用到的3个点downPoint,movePoint,upPoint。
一个主view类(一个自定义view),在主view类中定义了统一的paint、bitmap、canvas,以及子类中需要用到的3个点downPoint,movePoint,upPoint。
其他子类(画直线的view、画矩形的view····)都是继承这个主view类。
在每次选择形状的时候:
1、实例化一个view类
2、将view类加入到当前activity
画每一种形状都是在自己的view上进行,新加进来的view覆盖前面的view。
每个子类中都有方法
onTouchEvent
()执行自己的操作:
public boolean onTouchEvent(MotionEventevent) {[/align]
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
caseMotionEvent.ACTION_MOVE:
caseMotionEvent.ACTION_UP:
}
return true;
}
缺点:
每次选择一个形状的时候都会调用
主view
类中的
bitmap = Bitmap.createBitmap(480, 700,Bitmap.Config.ARGB_8888); //
设置位图的宽高
canvas=new Canvas(bitmap);
来重新创建一个bitmap
,如果不停的选择,就会不停的新建bitmap
。Bitmap
创建过多之后就会报:内存溢出
错误。
具体的实现方法:
关于画图的具体实现方式,比如:直线如何实现拖动?等等。我在代码中做了详细的注释,相信大家都能看懂。具体情况下载代码看吧。大家如果有什么不懂的,欢迎交流,我尽力解答。
写在最后:
这个小项目还有很多不完善的地方,欢迎大家提供宝贵意见,提出改进方法。
如果你下载之将代码后完善的更好了,希望能发我一份。大家一起改进。谢谢了
实现效果:
---------------------------------------------------------------------------------------------------------
第二种实现方式:
比第一种实现方式好多了,整个项目看起来更系统。
在DrawDemo01
的基础上添加了橡皮、清空、保存图片、查看图片的功能。
具体实现方式源码注释写的很清楚了,大家有兴趣的自己下载看看。
实现效果: