[Android实例] 手写签名,画笔颜色选择器
2016-01-05 09:23
489 查看
该篇文章从eoeAndroid搬迁过来的,原文地址:[Android实例] 手写签名,画笔颜色选择器
今天没事做,突然想做一下手写签名的东西,然后就开始行动了,然后做了一天,终于完善了Demo。 在这个手写签名demo中,有以下功能:
1.选择画笔的颜色
2.使用橡皮擦
3.清除或重头开始绘制图片
4.上一步或下一步绘制的效果
5.得到当前展示的绘制效果
主要代码:
手写绘制板:
颜色选择器:参照这位童鞋的代码http://www.linuxidc.com/Linux/2012-01/51167.htm
![](http://img.blog.csdn.net/20160105102759317)
下载地址:项目代码
今天没事做,突然想做一下手写签名的东西,然后就开始行动了,然后做了一天,终于完善了Demo。 在这个手写签名demo中,有以下功能:
1.选择画笔的颜色
2.使用橡皮擦
3.清除或重头开始绘制图片
4.上一步或下一步绘制的效果
5.得到当前展示的绘制效果
主要代码:
手写绘制板:
@Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if (isFirst) { cacheBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888); cacheCanvas = new Canvas(cacheBitmap); cacheCanvas.drawColor(Color.WHITE); addBitmap(); isFirst = false; } canvas.drawBitmap(cacheBitmap, 0, 0, null); canvas.drawPath(path, paint); }
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { int curW = cacheBitmap != null ? cacheBitmap.getWidth() : 0; int curH = cacheBitmap != null ? cacheBitmap.getHeight() : 0; if (curW >= w && curH >= h) { return; } if (curW < w) curW = w; if (curH < h) curH = h; Bitmap newBitmap = Bitmap.createBitmap(curW, curH, Bitmap.Config.ARGB_8888); Canvas newCanvas = new Canvas(); newCanvas.setBitmap(newBitmap); if (cacheBitmap != null) { newCanvas.drawBitmap(cacheBitmap, 0, 0, null); } cacheBitmap = newBitmap; cacheCanvas = newCanvas; }
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: Log.i("Log", "ACTION_DOWN"); isClear = false; currentX = event.getX(event.getActionIndex()); currentY = event.getY(event.getActionIndex()); path.moveTo(currentX, currentY); break; case MotionEvent.ACTION_MOVE: if (isOtherTouch) { return true; } float x = event.getX(event.getActionIndex()); float y = event.getY(event.getActionIndex()); path.quadTo(currentX, currentY, x, y); currentX = x; currentY = y; break; case MotionEvent.ACTION_UP: isOtherTouch = false; cacheCanvas.drawPath(path, paint); path.reset(); while (position + 1 < bitmapList.size()) { bitmapList.remove(bitmapList.size() - 1); } addBitmap(); break; case MotionEvent.ACTION_POINTER_DOWN: isOtherTouch = true; break; case MotionEvent.ACTION_POINTER_UP: break; } invalidate(); return true; }
颜色选择器:参照这位童鞋的代码http://www.linuxidc.com/Linux/2012-01/51167.htm
下载地址:项目代码
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories