多媒体编程
- 文本、图片、音频、视频
图片
- 图片在计算机中的大小
- 图片的大小 = 图片的总像素 * 每个像素的大小
- 单色位图:只能表示两种颜色,使用两个数字0和1,使用一个长度为1的二进制就可以表示,单位像素占用1/8字节。
- 16色位图:能表示16种颜色,需要0000-1111表示,单位像素占用1/2个字节。
- 256色位图:能表示256颜色,需要00000000-111111111,单位像素占用1个字节。
- 24位位图:每个像素占24位,即单个像素占3个字节。
- R:0-255,需要一个字节。
- G:0-255,需要一个字节。
- B:0-255,需要一个字节。
- 图片的大小 = 图片的总像素 * 每个像素的大小
加载大图片
- 计算机把图片所有像素信息都解析出来保存至内存。
- Android保存图片像素信息,使用ARGB保存的。即单个像素占用4个字节。
- 若手机屏幕320*480,总像素为153600,图片为宽高2400*3200,总像素为76800000。2400/320=7;3200/480=6;使用大的那个数值进行缩放。
创建图片副本
//这个对象是只读的
Bitmap bmSrc=BitmapFactory.decodeFile("sdcard/dog.jpg");
//创建图片副本
//1.创建白纸
Bitmap bmCopy=Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());
//2.创建画笔对象
Paint paint =new Paint();
//3.创建画板
Canvas canvas =new Canvas(bmCopy);
//4.作画
canvas.drawBitmap(bmSrc, new Matrix(), paint);
ImageView iv=(ImageView) findViewById(R.id.iv1);
iv.setImageBitmap(bmSrc);
iv.setImageBitmap(bmCopy);
保存图片
- SD每次准备的时候总是遍历sd卡的文件,然后将对媒体文件放在MediaStore数据库中生成一个索引,数据库中保存了文件的文件名、路径、大小、长度和艺术家。
- 图库、音乐、视频程序每次启动时,不会遍历寻找多媒体文件,而是直接从MediaStore数据库中读取多媒体文件,通过库中的索引找到对应的多媒体文件后,将文件显示在界面中。
SurfaceView
双缓冲技术:要求刷新机制比较高的。
重量级组件
安装设计理念:只要不可见,就不会创建,并且销毁。