看了http://www.moandroid.com/?p=1834和http://chroya.iteye.com/blog/712078的文章,有点心得,自己总结一下,以便于自己以后用
Matrix : 矩阵
在android中,Matrix是由 9 个float 构成的,是一个3*3的矩阵
post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post,来完成所需的整个变换
pre是前乘,参数给出的矩阵乘以当前的矩阵。所以操作是在当前矩阵的最前面发生的
上面的sinX和cosX 代表的是旋转的角度的sin和cos的值,translateX,translateY 代表的是X ,Y 轴的偏移量,scale代表的是缩放的比例,1代表不变,2 代表缩放1/2
下面举个例子:
LinearLayout lin = new LinearLayout(MainActivity.this);
lin.setOrientation(LinearLayout.VERTICAL);
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.wewew);
Bitmap c =Bitmap.createBitmap(b.getWidth(),b.getHeight(),Bitmap.Config.ARGB_8888);
Paint p = new Paint();
p.setColor(Color.RED);
Canvas canvas = new Canvas(c);
Matrix m = new Matrix();
float f[] = {0.0f,-1.0f,0.0f,
-1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f
};
m.setValues(f);
m.preTranslate(-200, -200);
canvas.drawBitmap(b, m, null);
ImageView imageView = new ImageView(MainActivity.this);
ImageView imageView2 = new ImageView(MainActivity.this);
imageView2.setImageBitmap(b);
imageView.setImageBitmap(c);
lin.addView(imageView);
lin.addView(imageView2);
setContentView(lin);
运行结果:
第二个是开始的位置,
第一个是被翻转了90度的