Android -- 图片画画板(canvas、paint、bitmap)
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageView android:id="@+id/iv"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="match_parent"/><Buttonandroid:id="@+id/btn"android:layout_weight="6"android:onClick="save"android:layout_width="match_parent"android:layout_height="match_parent"android:text="保存图片"/> </LinearLayout>
MainActivity:
public class MainActivity extends Activity {private Button button;private ImageView p_w_picpathView;private Bitmap baseBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);p_w_picpathView=(ImageView) findViewById(R.id.iv);paint=new Paint();paint.setColor(Color.BLUE);//创建一个可修改的BitmapbaseBitmap=Bitmap.createBitmap(480, 320, Bitmap.Config.ARGB_8888);canvas=new Canvas(baseBitmap);canvas.drawColor(Color.WHITE);p_w_picpathView.setOnTouchListener(new OnTouchListener() {//定义手指坐标int startx;int starty;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:startx=(int) event.getX();starty=(int) event.getY(); break;case MotionEvent.ACTION_MOVE:int newx=(int) event.getX();int newy=(int) event.getY();canvas.drawLine(startx, starty, newx, newy, paint);//跟新画笔的开始位置startx=(int) event.getX();starty=(int) event.getY(); p_w_picpathView.setImageBitmap(baseBitmap);break;case MotionEvent.ACTION_UP:break;}return true;}}); }public void save(View v) {try {File file=new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");FileOutputStream fos=new FileOutputStream(file);baseBitmap.compress(CompressFormat.JPEG, 100, fos);//第一个参数为图片格式fos.close();Toast.makeText(this, "保存图片成功", 2000).show();//模拟消息:SD卡被重新挂载了Intent intent=new Intent();intent.setAction(intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);} catch (FileNotFoundException e) {Toast.makeText(this, "保存图片失败", 2000).show();e.printStackTrace();} catch (IOException e) {e.printStackTrace();} }
}
因为要存入SD中,所以还要加一个权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
运行结果:
转载于:https://blog.51cto.com/shaotao/1299628
Android -- 图片画画板(canvas、paint、bitmap)相关推荐
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- Android可滑动画板,Android实现画画板案例
本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...
- 将图片画到canvas 上的几种方法
我的网站:http://www.mzzy8.com/ 任何的知识体系,都是由小的知识体系构成,你要想成为高手 无法第一步就是把所有的琐碎的知识都搞定它! 写的多了,自然就会了,这也是为啥要写笔记,写笔 ...
- 学习android 画板源代码,Android实现画画板案例
郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...
- android地图图片加载,Android图片加载解析之Bitmap
写在前面的话,本篇文章是参考自<Android开发艺术探索>所写,看此书已是2015年的事情啦,由于独立开放项目,以至于对于Android原理性东西生疏,最近需要换工作,重新捡起此书,仍有 ...
- Android图片加载之认识bitmap的四种加载方式
Android的Bitmap有四种高效加载方式 从获取方式分: (1)以文件流的方式 假设在sdcard下有 test.png图片 FileInputStream fis = new FileInpu ...
- 把base64格式图片画到canvas画布上(干货建议收藏)
应用场景: 使用时将里面的base数据替换即可,画布大小进行修改 如果在vue使用时必须在mounted里面.或者点击触发,因为在这个生命周期后才能获取dom元素 JavaScript: <!D ...
- 将base64格式的图片画到canvas上(js和vue两种)
使用时将里面的base数据替换即可,画布大小进行修改 vue使用时必须在mounted里面.或者点击触发,因为在这个生命周期后才能获取dom元素 js <!DOCTYPE html> &l ...
- android canvans 画3d,Canvas 3D梯形
JavaScript 语言: JaveScriptBabelCoffeeScript 确定 var w = c.width = window.innerWidth, h = c.height = wi ...
最新文章
- C语言visual studio警告:取消对NULL指针“p”的引用
- sqlplus 自动换行_sqlplus常用操作命令2
- 3到6年的.NETer应该掌握哪些知识
- ssm 静态资源处理器
- 5000字“肝”了这篇IP协议
- python零基础自学教材-零基础的小白怎么学python?
- 从尾到头打印链表(六)
- ftrace跟踪内核_用Ftrace跟踪内核模块
- 使用docker分离服务与数据库
- java插件化设计开发
- TVS 瞬态抑制二极管如何选型?
- linux版本信息以及x86与x86_64的区别
- latex参考文献bib基本格式_Latex如何添加参考文献——使用bib
- 小白必看 APN/证书/越狱等名词详解
- 王道操作系统课代表 - 考研计算机 第一章 计算机概述 究极精华总结笔记
- Google Bard vs ChatGPT:哪一个更适合创造富有创造性的文学作品?
- sklearn提示cannot import name ‘MaskedArray‘ from ‘sklearn.utils.fixes‘的解决方法
- 学好编程的 4 个秘诀
- Scalar类-颜色类
- SAP中供应商清单输出方法