第53章、Matrix图形处理(从零开始学Android)
转自:http://blog.csdn.net/jianghuiquan/article/details/8569159
在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);
- }
- }
二、运行结果