关于bitmap的一些知识

bitmap位图

bitmap工厂返回的图片都是32位的位图,即一个像素点需要32位存储,其中存储了argb(透明度,红色设置,绿色设置,蓝色设置)

加载图片跟分辨率有关,跟图片大小无关,图片大小 是放在存储卡里面,加载图片需要的大小计算方式是分辨率*每个像素存储的大小,如果是bitmap的话 每个像素的存储值是4个byte32位

缩放照片需要调用BitmapFactory里面的内部类Options里面的设置采样率inSamplesize(设置的数值宽高都有效,即实际效果是设置的平方)

通过获取的宽高获得比例,采用比例大的值

在部分低版本是没有透明度的相关操作,如果想要在低版本的里面设置支持,需要在createBitmap的配置文件里面选择argb系列(例如argb8888,其他理论可行,目前没实践)的配置,不能用原图的config或者rgb的选择

在内存中创建一个图片的拷贝

1.创建一个空白的bitmap.宽高信息和原图保持一致

Bitmap.createBitmap(宽,高,配置信息) * 配置信息在Bitmap.config含有相关常量

返回的是一个空白的与原图宽高配置信息一样的空白的位图

2.创建一个画板

Canvas canvas = new Canvas(空白的bitmap)

  • canvasdrawLine(起始x轴坐标,起始y轴坐标,结束x轴坐标,结束y轴坐标,画笔) 画出一道线
  • 如果是连续作画,需要在前事件结束后重新设置起始位置
  • 如果创建画布没有设置背景颜色,会默认为背景颜色

以空白位图作为画板

3.创建画笔

Paint paint = new Paint()

  • paint.setColor(颜色) 设置画笔颜色
  • paint.setStrokeWidth(宽度(单位:像素点)) 设置画笔宽度

4.作画

matrix 变化矩阵

  • matrix.setScale(宽缩放比例,高缩放比例);
  • matrix.setTranslate(向右移动的距离(单位:像素),向下移动的距离(单位:像素))
  • matrix.setRotate(向右旋转角度(单位:角度°))
  • matrix.setRotate(向右旋转角度(),旋转依据的中心点x轴坐标,中心点y轴坐标)
  • matrix.settranslate和matrix.setScale不能放在一起
  • 如果想一起使用,第二个不能使用set需要使用post
  • 水平翻转 matrix.setScale(-1,1) matrix.postTranslate(原图的宽度,0) canvas.drawBitmap(要临摹的原图,变化矩阵,画笔)

bitmap对象.compress(图片的格式,图片的质量(100指100%),输出流)可以设置将bitmap位图

OnTouchListener触摸事件

  • 设置触摸事件是setOnTouchListener onTouchListener的实现类的返回值如果是false的时候 代表的是还没有处理完毕,即系统会等待这个事件处理完毕,返回值为true的时候代表是说这个事件已经处理完毕

选项菜单键OnCreateOptionsMenu

点击模拟器中的菜单选项的时候会出现的菜单 * 设置onOptionsItemSelected,选项被点击的时候触发的事件

模拟一个sd卡插入的广播

  1. 设置一个意图
  2. 设置动作setAction(Intent.ACTIONMEDIAMOUNTED)
  3. 设置data(Uri的fromFile(sd卡的路径))
  4. 发送广播 使系统图库认为sd卡重载,从而重新读取一遍

你可能感兴趣的:(关于bitmap的一些知识)