1、使用简单图片
BitmapFactory类提供了一些解码方法,来创建一个位图从各种来源。
decodeByteArray(byte[ ] data ,int offset,int length):从指定的字节数组的offset位置开始,将长度为length的直接数据解析陈Bitmap对象。
decodeFile(String pathName):从pathName指定的文件中解析、创建Bitmap对象。
decodeFileDescriptor(FileDescriptor fd) :从FileDescriptor指定的目录下解析 、创建Bitmap对象
decodeResource(Resource res,int id):用于指定的资源id从指定的资源中国解析、创建Bitmap对象
decodeStream(inputStream is):用于从指定的流中解析、创建Bitmap对象
Bitmap回收
Android中为Bitmap提供了两个提供了两个方法来判断他是否已回收,以及强制Bitmap回收自己。
boolean isRecycled() :返回Bitmap对象是否已被回收
void recycle() :强制回收一个Bitmap对象
图片移动缩放:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | |
1 2 3 4 5 6 | |
二、Paint类
paint类代表画笔,用来描述图形的颜色和风格,如线宽、颜色 、透明度、和填充效果等信息,使用需要先创建该类的对象,
设置颜色 setColor(int color)
三、Canvas类
Canvas类创建一个画布
Canvas绘制图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
3、使用Matrix控制变换:
Matrix(矩阵、模型)是Android提供的一个矩阵工具类,它本身并不能对图像或组件进行变换,但他可对其他API集合来控制图形、组件的变换。
使用Matrix控制图像或组件变换的步骤如下:
1、获取Matrix对象,该Matrix对象既可以新创建,也可以直接获取其他对象封装的Matrix
2、调用Matrix的方法进行平移、旋转、缩放、倾斜等。
3、将程序对Matrix所做的变换应用到指定图像或组件。
Matrix提供了如下方法来控制平移、旋转和缩放:
1、Translate————平移变换
2、Scale————缩放变换
3、Rotate————旋转变换
4、Skew————错切变换
setTranslate(float dx,floatdy):控制Matrix进行平移
setSkew(float kx,float ky,float px,float py):控制Matrix以px,py为轴心进行倾斜。kx、ky为x,y方向上的倾斜距离。
setSkew(float kx,float ky):控制Matrix进行倾斜。kx、ky为x、y方向上的倾斜距离。
setRotate(float degrees,float px,float py):控制Matrix进行旋转,degrees控制旋转的角度。
setRotate(float degrees,float px,float py):设置以px、py为轴心进行旋转,degrees控制选转的角度。
set Scale(float sx,float sy):设置Matrix进行缩放,sx,sy控制x,y方向上的缩放比例。
setScale(float sx,float sy,float px,float py):设置Matrix以px、py为轴心进行缩放,sx,sy控制x,y方向上的比例。
一旦对Matrix进行了变换,接下来就可以应用该Matrix对图像进行控制了。例如Canvas就提供了了一个drawBitmap(Bitmap bitmap,Matrix matrix,Paint paint)方法,调用该方法就可以在绘制bitmap时应用Matrix上的变化。
Matrix,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
在Android里面,Matrix由9个float值构成,是一个3*3的矩阵。最好记住。如下图:
解释一下,上面的sinX和cosX,表示旋转角度的cos值和sin值,注意,旋转角度是按顺时针方向计算的。
translateX和translateY表示x和y的平移量。scale是缩放的比例,1是不变,2是表示缩放1/2。