在android中通过Canvas显示图像我们已经明白了,但如果想让图像旋转、缩放、透明……,我们则要使用Matrix。
本案例让位图放大3倍。
一、程序文件
1、新建BitmapView.java文件。
在“src/com.genwoxue.matrix”位置,新建MatixView.java文件。
MatixView.java文件源代码如下:
package com.genwoxue.matrix;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Color;
import android.view.View;
public class MatrixView extends View{
Paint paint=null;
Resources src=null;
Bitmap bmp=null;
public MatrixView(Context context) {
super(context);
/*----------------------------------------------
* 建议尽量把初始化画笔、资源、位图不放在onDraw方法中,这是因为:
* onDraw经常会运行 到的,不要在里面new对象,越少越好,不然很浪费内存
*--------------------------------------------*/
//获取画笔paint,初始化画笔
paint=new Paint();
//获取资源src
src=getResources();
// 获取位图
bmp=BitmapFactory.decodeResource(src, R.drawable.ic_launcher);
}
@Override
protected void onDraw(Canvas canvas){
//显示位图
canvas.drawBitmap(bmp,220,220,paint);
//初始化Matrix,放大3倍
Matrix matrix=new Matrix();
matrix.setScale(3f, 3f);
//显示放大3倍的位图
canvas.drawBitmap(bmp, matrix, null);
}
}
2、打开MainActivity.java主文件
打开“src/com.genwoxue.matrix/MainActivity.java”文件。
MainActivity.java文件源代码如下:
package com.genwoxue.matrix;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//实例化GraphicsView
MatrixView mv = new MatrixView(this);
/* 在以前我们通过setContentView(R.layout.activity_main)显示布局文件
* 本例中使用GraphicsView对象gv代替以前布局文件
*/
setContentView(mv);
}
}
二、运行结果