android matrix的简单操作
0大家好!今天学习了matrix的简单用法,希望在这里能和大家一起学习和了解一下matrix的相关知识。 在android中, Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set, post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点。
其中set是直接设置Matrix的值,每次set一次,整个Matrix的数组都会变掉。
其次post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post,来完成所需的整个变换。例如,要将一个图片旋转30度,然后平移到(100,100)的地方,可以这样做:
Matrix m = new Matrix();
m.postRotate(30);
m.postTranslate(100, 100);
Matrix m = new Matrix();
m.postRotate(30);
m.postTranslate(100, 100);
最后 pre是前乘,参数给出的矩阵乘以当前的矩阵。所以操作是在当前矩阵的最前面发生的。例如上面的例子,如果用pre的话,可以这样做:
Matrix m = new Matrix();
m.setTranslate(100, 100);
m.preRotate(30);
旋转、缩放和倾斜都可以围绕一个中心点来进行,如果不指定,默认情况下,是围绕(0,0)点来进行。
下面我通过我今天做的小例子来进一步理解一下matrix的一些简单操作:
先看一下运行界面:
http://www.apkbus.com/data/attachment/forum/201212/14/173353axrpd7d2xstqzqgt.jpg
1.当我们点击缩放按钮的时候,它会按照EditText中输入的比例对imageView进行缩放,主要是通过matrix的postScale方法实现的。效果图如下:
http://www.apkbus.com/data/attachment/forum/201212/14/173354wsxbfyuqqbytrta6.jpg
按0.25的比例缩小
http://www.apkbus.com/data/attachment/forum/201212/14/173355fjrn4rr0kdxvjgl0.jpg
按1.75的比例放大
2.当点击旋转按钮的时候,会按照上面标明的角度值进行旋转,通过matrix的postRotate实现的,数值为正的时候是顺时针旋转,为负值时是逆时针旋转。效果图如下:
http://www.apkbus.com/data/attachment/forum/201212/14/173356lvm0shjzstztsmm3.jpg
顺时针旋转30度
http://www.apkbus.com/data/attachment/forum/201212/14/173357wsnevrtighgrvhrs.jpg
逆时针旋转30度
3.当点击移动按钮的时候,图片进行移动,通过matrix的postTranslate方法实现的,效果如下:
http://www.apkbus.com/data/attachment/forum/201212/14/173357fiwdibtfs3d7bw7p.jpg
上面的前一个10标明平移的横坐标,第二个10标明的是纵坐标
当点击还原的时候,图片恢复到最初的状态,主要是通过matrix的reset()方法实现的。
http://www.apkbus.com/data/attachment/forum/201212/14/173358j8dqugx228igd2z2.jpg
还原后的效果
上述的代码如下:
?
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
页:
[1]