Android 画画板(OnTouchListener 应用)
【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 应用)相关推荐
- Android画画板剖析
public class MainActivity extends AppCompatActivity {private ImageView iv;private Bitmap bitmap, bac ...
- 学习android 画板源代码,Android实现画画板案例
郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- Android可滑动画板,Android实现画画板案例
本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...
- android实现简单的画画板
画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...
- Android简易实战教程--第二十四话《画画板》
今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...
- Android之Canvas画画板
前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~ 现在我要写的是画画板这个项目~ 项目效果: 1.画笔的颜色的随意更改 2.画笔的大小也可以随着拖动条的拖动而改变 3 ...
- Android开发笔记之简易画画板的制作
如果有这样的需求,有多种颜色可供选择,通过seekbar调节画笔的粗细,实现在画板上涂鸦的功能.没有考虑其他的功能,只是对前面有关Android图像处理和Canvas的知识进行一个运用. 一.布局 三 ...
- Android可滑动画板,Android 利用 Canvas 画画板
首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...
最新文章
- 终于有人把计算机视觉讲明白了
- matlab绘制圆,且求解两个圆的交点坐标
- 成功解决调用密钥报错4001 加密方式错误
- pytest集成Allure Report
- Lua 与 C混合编程 .
- c++ mat赋值_Mat 的几种初始化和赋值方法
- windows 用户管理
- 小程序源码:首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps 首席多多客 八合一小程序源码
- 基于JAVA的私人牙科诊所管理系统
- 编出个区块链:数据结构的序列化,看看数字货币如何传输数据
- 38、Power Query-背后的贤内助M语言
- python分析红楼梦中人物形象_红楼梦中贾宝玉的人物形象分析
- 如何用python制作三维动画_用Python制作3D动画
- win10环境下搭建IIS图片服务器
- 蓝牙耳机音质真的不好吗?初级发烧友应该选择什么样式蓝牙耳机
- 共享虚拟主机是不是服务器,共享虚拟主机、独享虚拟主机还是云服务器?
- (论文笔记06.High Fidelity Data Reduction for Big Data Security Dependency Analyses(CCF A)2016)
- 音频转换器怎么将ogg转换mp3格式
- 《RA-UNet: A hybrid deep attention-aware network to extract liver and tumor in CT scans》
- ESD保护芯片BAT54S/BAV99和电平转换芯片SN74AVC1T45
热门文章
- 【java毕业设计】基于javaEE+SSH+MySql+MVC的动漫论坛设计与实现(毕业论文+程序源码)——动漫论坛
- 2019牛客暑期多校训练营--解题(目录贴)
- pwn学习——ret2libc1
- 机器学习笔记5-Tensorflow高级API之tf.estimator
- 中职计算机英语教学计划,中职英语教学计划
- 微信小程序项目《天使童装》
- 实用微带线的相关计算
- PHP获取手机号归属地,PHP获取2017最新手机号段属地类
- linux火狐网页无声音,解决Firefox在Ubuntu下播放Flash无声音的问题
- 《Multiple UAV exploration of an unknown region》翻译