【1】布局:

【2】 代码实现:

流程:

A,因为原图无法被修改所以我们需要创建一个副本,把副本添加到Imageview 上

B,给ImageView 设置setOnTouchListener监听  按下,抬起,移动。

C,设置画笔颜色,字体

D,保存在内存卡里。

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// [1]找到iv 用来展示我们画的内容iv = (ImageView) findViewById(R.id.iv);// [2]先获取bg.png的原图srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);copyBimap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(), srcBitmap.getConfig());// [3.1]创建画笔类paint = new Paint();// [3.2]创建一个画布类 相当于把白纸铺到了画布上canvas = new Canvas(copyBimap);// [3.3]开始作画 当32行代码执行完毕后 白纸上就有内容了canvas.drawBitmap(srcBitmap, new Matrix(), paint);// [3.4]画一条线 线由2个点确定一条线// canvas.drawLine(20, 30, 40, 70, paint);// [4]把质的内容展示到iv上iv.setImageBitmap(copyBimap);// [5]给iv设置触摸事件iv.setOnTouchListener(new OnTouchListener() {float startX = 0;float startY = 0;@Overridepublic boolean onTouch(View v, MotionEvent event) {// [6]具体判断一下触摸事件的类型int action = event.getAction();switch (action) {case MotionEvent.ACTION_DOWN: // 按下// [7]获取手指按下的坐标startX = event.getX();startY = event.getY();System.out.println("按下:" + startX + "~~~~" + startY);break;case MotionEvent.ACTION_MOVE: // 移动// [8]获取移动后的坐标float stopX = event.getX();float stopY = event.getY();// [9]不停的画线canvas.drawLine(startX, startY, stopX, stopY, paint);System.out.println("移动:" + stopX + "~~~~" + stopY);// [10]更新iviv.setImageBitmap(copyBimap);// [11]更新一下开始的坐标 startX startYstartX = stopX;startY = stopY;break;case MotionEvent.ACTION_UP: // 抬起break;}// 如果返回值是true 当前监听器对象会消费掉return true;}});}// 点击按钮让画笔变红色public void click1(View v) {paint.setColor(Color.RED);}// 点击按钮让画笔加粗public void click2(View v) {paint.setStrokeWidth(19);}//点击按钮保存 大作public void click3(View v) {try {File file = new File(Environment.getExternalStorageDirectory().getPath(),"dazuo.png");FileOutputStream fos = new FileOutputStream(file);//参1:保存图片的格式   参数2:quality 质量copyBimap.compress(CompressFormat.PNG, 100, fos);fos.close();Toast.makeText(getApplicationContext(), "sucess", 1).show();} catch (Exception e) {e.printStackTrace();}}}

Android 画画板(OnTouchListener 应用)相关推荐

  1. Android画画板剖析

    public class MainActivity extends AppCompatActivity {private ImageView iv;private Bitmap bitmap, bac ...

  2. 学习android 画板源代码,Android实现画画板案例

    郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...

  3. Android 实现图片画画板

    本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  4. Android可滑动画板,Android实现画画板案例

    本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...

  5. android实现简单的画画板

    画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...

  6. Android简易实战教程--第二十四话《画画板》

    今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  7. Android之Canvas画画板

    前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~ 现在我要写的是画画板这个项目~ 项目效果: 1.画笔的颜色的随意更改 2.画笔的大小也可以随着拖动条的拖动而改变 3 ...

  8. Android开发笔记之简易画画板的制作

    如果有这样的需求,有多种颜色可供选择,通过seekbar调节画笔的粗细,实现在画板上涂鸦的功能.没有考虑其他的功能,只是对前面有关Android图像处理和Canvas的知识进行一个运用. 一.布局 三 ...

  9. Android可滑动画板,Android 利用 Canvas 画画板

    首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...

最新文章

  1. 终于有人把计算机视觉讲明白了
  2. matlab绘制圆,且求解两个圆的交点坐标
  3. 成功解决调用密钥报错4001 加密方式错误
  4. pytest集成Allure Report
  5. Lua 与 C混合编程 .
  6. c++ mat赋值_Mat 的几种初始化和赋值方法
  7. windows 用户管理
  8. 小程序源码:首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps 首席多多客 八合一小程序源码
  9. 基于JAVA的私人牙科诊所管理系统
  10. 编出个区块链:数据结构的序列化,看看数字货币如何传输数据
  11. 38、Power Query-背后的贤内助M语言
  12. python分析红楼梦中人物形象_红楼梦中贾宝玉的人物形象分析
  13. 如何用python制作三维动画_用Python制作3D动画
  14. win10环境下搭建IIS图片服务器
  15. 蓝牙耳机音质真的不好吗?初级发烧友应该选择什么样式蓝牙耳机
  16. 共享虚拟主机是不是服务器,共享虚拟主机、独享虚拟主机还是云服务器?
  17. (论文笔记06.High Fidelity Data Reduction for Big Data Security Dependency Analyses(CCF A)2016)
  18. 音频转换器怎么将ogg转换mp3格式
  19. 《RA-UNet: A hybrid deep attention-aware network to extract liver and tumor in CT scans》
  20. ESD保护芯片BAT54S/BAV99和电平转换芯片SN74AVC1T45

热门文章

  1. 【java毕业设计】基于javaEE+SSH+MySql+MVC的动漫论坛设计与实现(毕业论文+程序源码)——动漫论坛
  2. 2019牛客暑期多校训练营--解题(目录贴)
  3. pwn学习——ret2libc1
  4. 机器学习笔记5-Tensorflow高级API之tf.estimator
  5. 中职计算机英语教学计划,中职英语教学计划
  6. 微信小程序项目《天使童装》
  7. 实用微带线的相关计算
  8. PHP获取手机号归属地,PHP获取2017最新手机号段属地类
  9. linux火狐网页无声音,解决Firefox在Ubuntu下播放Flash无声音的问题
  10. 《Multiple UAV exploration of an unknown region》翻译