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卡插入的广播
- 设置一个意图
- 设置动作setAction(Intent.ACTIONMEDIAMOUNTED)
- 设置data(Uri的fromFile(sd卡的路径))
- 发送广播 使系统图库认为sd卡重载,从而重新读取一遍