在android中通過Canvas顯示圖像我們已經明白了,但如果想讓圖像旋轉、縮放、透明……,我們則要使用Matrix。
本案例讓位圖放大3倍。
一、程序文件
1、新建BitmapView.java文件。
在“src/com.genwoxue.matrix”位置,新建MatixView.java文件。
MatixView.java文件源代碼如下:
[java] view plain copy
- 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文件源代碼如下:
[java] view plain copy
- 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);
- }
-
- }
二、運行結果