随手涂鸦
来源:互联网 发布:1.5厚js防水涂料用量 编辑:程序博客网 时间:2024/05/16 02:04
之前其实就感觉这个小功能很实用,现在就简单说一下吧,首先要画画我们肯定会想到的需要画板,画笔跟画纸,其实android也是如此,需要我先说一下布局吧。
<ImageView android:id="@+id/iv_image" android:layout_width="fill_parent" android:layout_height="fill_parent" /><Button android:id="@+id/btn_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"/><Button android:id="@+id/btnclean" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清空" android:layout_toLeftOf="@id/btn_save" android:layout_alignTop="@id/btn_save"/>
使一张图片填充窗体,也就是我们展示的图片,初始化这些控件我就不说了,因为只要大家稍微有点android基础就会啦,然后也就是我们的关键部分啦,也就是当我们点击图片Imageview时就要画画啦,首先我们要给图片Imageview设定一个触摸事件即 mimageView.setOnTouchListener(new MyTouchivListener());
其中MyTouchivListener是自定义的。代码如下:
/** *当ImageView被用户手指触摸时,触发此方法 * 按下跟抬起时只会触发一次,移动的事件会触发多次 * * MotionEvent.ACTION_DOWN://按下事件 * MotionEvent.ACTION_MOVE://移动事件 * MotionEvent.ACTION_UP:// 抬起事件 */class MyTouchivListener implements View.OnTouchListener{ @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action){ case MotionEvent.ACTION_DOWN://按下事件 if(panel == null){ //创建一个空白的画纸,指定宽高:跟ImageView一模一样 panel = Bitmap.createBitmap(mimageView.getWidth(), mimageView.getHeight(), Bitmap.Config.ARGB_8888); //初始化一个画板 canvas = new Canvas(panel); //初始化画笔 paint = new Paint(); paint.setColor(Color.RED);//画笔的颜色 paint.setStrokeWidth(5);//指定画笔的画出来线的宽度 //画板向画纸画一个黄色的颜色 canvas.drawColor(Color.YELLOW); mimageView.setImageBitmap(panel); } return true; //true 消费当前的事件 false 不消费事件,由其他控件处理 }}
到这里我想我的一个初始画板已经实现啦,但是 我一触摸还是没画呀,因为什么呢,当然还是自己的画笔没划线,但是又该怎么做呢,大家想一想,其实画画也就是画线,而划线不就是俩个点之间连线么,那点呢,我又该怎么表示呢,其实android中点的获取也就是通过你的坐标X,Y轴来具体定位你的某一个点。例如
我们要获取初始点(需要触摸事件event)
int downX = (int)event.getX();
int downY = (int)event.getY();
然后也就是移动后的点啦
case MotionEvent.ACTION_MOVE://移动事件 //取出移动的点 int moveX = (int)event.getX(); int moveY = (int)event.getY(); //把按下的点跟移动的点连接起来canvas.drawLine(downX,downY,moveX,moveY,paint); mimageView.setImageBitmap(panel);//在初始化一下起始点 更新一下 downX = moveX ; downY = moveY ;
在这里我需要点出一点的是初始点必须要更新,不然就会出现是围绕你按下的那点来画的。好啦,你发现代码已经完整无缺啦,运行一下发现果然能顺利的跑起来啦
这里是我用Android studio编写,点击下载
这个demo很好地实现了画板的绘画以及保存跟清空图片,有兴趣的可以下载参考参考
0 0
- 随手涂鸦
- 随手涂鸦
- 随手涂鸦
- 随手涂鸦
- android 随手涂鸦
- Android项目之随手涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦
- "涂鸦"
- 涂鸦
- 涂鸦
- 涂鸦
- 涂鸦~~~~~
- 涂鸦
- 涂鸦
- 【h5-egret】深入浅出对象池
- java_final、抽象类、接口、多态
- vector内存释放机制
- 二叉树_二叉查找树
- [新的开始!!]集训结束总结
- 随手涂鸦
- 合并整理最短摘要生成算法
- Core Image中的高斯模糊
- DP - hdu5009 Paint Pearls
- 二叉树_二叉查找树
- java_复习总结
- hdu(5305)——Friends(dfs)
- C语言中volatile关键字的作用
- 【socket】有关socket的编程<三>