我们不仅可以使用Paint在canvas上描画各自图形、文字,还可以描画图片,下面需要使用到图像处理的两个类。
android.graphics.Bitmap
bitmap是Android系统中的图像处理的重要类之一,通过bitmap我们可以获取到图片的相关信息,bitmap文件图像效果好就需要占用越大存储空间;
android.graphics.BitmapFactory
BitmapFactory是一个创建Bitmap的工具类,为我们提供了从文件、流、byte数组中创建数组,在创建的时候,还为我们提供了一个内部类Options作为参数来控制Bitmap的创建,比如控制Bitmap的长和宽、像素的大小,是否只获取图片的一些信息(不加载图片数据,返回图片宽和高),是否在内存中复用等。
我们提前子res/drawable中放一张图片,然后使用 BitmapFactory.decodeResource来加载图片。
关于Bitmap和BitmapFactory类的其他方法另外介绍。
如下为实现代码:
package com.example.drawdomo;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
public class MyView extends View {
Context mContext;
Bitmap bitmap;
Paint paint;
Rect rect;
public MyView(Context context) {
super(context);
mContext = context;
bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.bronya); //加载图片
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
rect = new Rect(0,0,getWidth(),getHeight());
canvas.drawBitmap(bitmap,null,rect,paint);
}
}
运行后效果:
Domo代码: