联通连不通 发表于 2013-8-28 16:28

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]
查看完整版本: android matrix的简单操作