在Java中,利用过双缓冲技术,先将画笔画在内存上,再转化为图片,调出来。

当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏。

在Paint方法下,我们这样写:

    BufferedImage tmp = new BufferedImage(1200, 900, BufferedImage.TYPE_INT_ARGB);
Graphics g2 = tmp.createGraphics();

利用g2来绘图,然后再将tmp画在g上面

    g.drawImage(tmp, 0, 0, this);

在安卓中,我们也利用类似的思维。

其中Bitmap类似于BufferedImage,Canvas类似于Graphics,而paint则类似于画笔,原来是在Graphics下直接设置颜色,而现在则需要在paint下设置颜色,并在Canvas绘制传参时加入paint。

public boolean onTouch(View v, MotionEvent event) {
//获取当前时间的动作
if(flag == 0){
bitmap = Bitmap.createBitmap(iv.getWidth(),iv.getHeight(), Bitmap.Config.ARGB_8888);
flag = 1;
}
canvas = new Canvas(bitmap);
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:{
a = event.getX();
b = event.getY();
}break;
case MotionEvent.ACTION_UP:{
c = event.getX();
d = event.getY();
canvas.drawLine(a,b,c,d, paint);
}break;
} canvas.drawBitmap(bitmap, 0,0, paint);
iv.setImageBitmap(bitmap);
return true;
}

其中flag用来判断是否已经创立画布。

Android学习记录:Paint,Canvas和Bitmap的更多相关文章

  1. Android学习记录(3)—Android中ContentProvider的基本原理学习总结

    一.ContentProvider简介        当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...

  2. Android学习记录(10)—Android之图片颜色处理

    你想做到跟美图秀秀一样可以处理自己的照片,美化自己的照片吗?其实你也可以自己做一个这样的软件,废话不多说了,直接上图,上代码了! 效果图如下: 没处理前: 处理之后: MainActivity.jav ...

  3. mono for android 学习记录

    C#开发Android应用实战(全 扫描 中文版) 学习记录: 拖完控件后,不要急着按F5,需要重新生成,才能自动修改 Resource.Designer.cs 文件 1. Activity 是基于a ...

  4. android 学习记录-----------android 活动 意图 碎片

    将此篇博客作为记录android项目开发过程中的学习记录

  5. 中级实训Android学习记录——Toast、AlertDialog、ProgressBar

    学习记录 2020/11/22 Toast Toast Toast是一个消息提示组件 我们可以设置其显示的位置 自定义其显示的内容 对Toast的简单封装可以达到不同的目的 Toast的默认用法 To ...

  6. Android学习记录(三)——安装SQLite

    这次学习安装SQLite. 一.SQLite简介 重要特性:零配置,即不需要复杂的配置即可使用 详细:https://www.runoob.com/sqlite/sqlite-intro.html 二 ...

  7. Android学习记录(9)—Android之Matrix的用法

    Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作. 首先介绍一下矩阵运算.加法和减法就不用说了,对应位相加就好.图像处理,主要用到的是乘法 .下面 ...

  8. android.graphics(1) - Paint, Canvas, drawLine, drawPoint, drawRect, drawRoundRect, drawCircle, drawOval, drawArc

    一.Paint与Canvas 像我们平时画图一样,需要两个工具,纸和笔.Paint就是相当于笔,而Canvas就是纸,这里叫画布. 所以,凡有跟要要画的东西的设置相关的,比如大小,粗细,画笔颜色,透明 ...

  9. 【Android】Android 学习记录贴

    官网 教程学习笔记 Genymotion 安卓虚拟器太慢,用Genymotion(装载eclipse的插件) 利用Genymotion运行Android应用程序 1.首先,点击 来启动或者创建您要使用 ...

随机推荐

  1. 在myeclipse的jsp编辑器中怎么把Source/Preview调出来的方法步骤

    1.点击要打开的jsp 文件. 右键.选择 open with -->  MyEclipse Visual JSP Designer 就好了. 2. 如果想所有的jsp  都默认使用 这个可视化 ...

  2. 多表连接的三种方式 HASH MERGE NESTED

    多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP------------------------------------------------------20 ...

  3. php创建多级目录完整封装类操作

    创建多级目录函数中调用创建指定下的指定文件的函数: public function create_dir($dir,$mode=0777) { return is_dir($dir) or ($thi ...

  4. css复习内容

    有时候 自己动手写一遍比想十遍都有用 <!DOCTYPE html><html> <head> <meta charset="utf-8" ...

  5. JMeter网站测试分析

     WEB类型: User Driver:以用户量作为衡量系统性能的主要指标的系统,典型如IM系统.企业 内部业务系统: TPS-Driver:以tps作为衡量系统性能的主要指标的系统,典型的如消息系统 ...

  6. 【Maven】添加ueditor到maven本地仓库

    问题出现:ueditor不存在远程和本地仓库,项目的pom.xml中无法添加依赖,导致无法使用mvn打包发布 解决办法:将ueditor-1.1.2.jar添加到本地仓库 办法1.使用命令行,这个没就 ...

  7. Java基础二

    1 关键字 定义:被java语言赋予了特殊含义的单词. 特点:关键字中的所有字母都为小写. 用于定义数据类型的关键字 class.interface.byte.short.int.long.float ...

  8. 最长单词(一星级题目) 本来是很简单的,其实就是加个flag

    随机了一个题目: 给一个词典,找出其中所有最长的单词. 这道题对于初学者还是很有用的,毕竟用的逻辑是比较复杂的 样例 在词典 { "dog", "google" ...

  9. JEasyPoi 2.1.4 (Jeecg订制) 版本发布,Excel 和 Word 简易工具类

    JEasyPoi 2.1.4 (jeecg订制)版本发布,EasyPoi Excel 和 Word 简易工具类 easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 ...

  10. 【浅谈web安全】大企业安全:从员工下手

    目前所有的企业都存在这方面的问题,比如员工把服务器和后台密码直接明文保存在云笔记和网盘中,员工企业邮箱密码跟外部个人密码一致等等,通常我们在入侵的时候只要在微博搜索一个目标公司的员工,拿到常用密码后登 ...