android前台渲染图片

android前台渲染,主要是重写view的ondraw方法,在canvas里操作

自定义MyView类

package com.ssln;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {

    private Bitmap bitmap;        //图片
    private Paint paint;        //画笔
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initBitmap();
    }

    /**
     * 初始化信息
     */
    public void initBitmap()
    {
        //实例化画笔
         paint=new Paint();
         
         //从资源中加载
         bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img);
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setAntiAlias(true);        //开启抗锯齿
        paint.setColor(Color.BLACK);    //设置画笔颜色
        paint.setTextScaleX(15);        //设置文字大小
        canvas.drawBitmap(bitmap, 10,10, paint); //在10x10的位置画图片
        canvas.save();                    //保存画布状态
        
        Matrix m1=new Matrix();            //矩阵
        m1.setTranslate(500, 10);        //平移 X500 Y10
        Matrix m2=new Matrix();    
        m2.setRotate(15);                //旋转15°
        Matrix m3=new Matrix();            
        m3.setConcat(m1, m2);            //合并矩阵
        m1.setScale(0.8f, 0.8f);        //设置缩放比例
        m2.setConcat(m3, m1);            //合并
        canvas.drawBitmap(bitmap, m2, paint);  //画图,经过了平移,旋转,缩放
        canvas.restore();                //恢复画布状态
        canvas.save();
        paint.setAlpha(180);            //设置透明度
        m1.setTranslate(200, 100);
        m2.setScale(1.3f, 1.3f);
        m3.setConcat(m1, m2);
        canvas.drawBitmap(bitmap, m3, paint);  //画图,经过了平移,缩放
        paint.reset();                  //重置画笔
        canvas.restore();
        paint.setTextSize(24);
        paint.setColor(Color.BLACK);
        canvas.drawText("图片宽度:"+bitmap.getWidth(), 20,240, paint); //写文字,图像的宽度
        canvas.drawText("图片高度:"+bitmap.getHeight(), 20,270, paint);
        paint.reset();
    
    }
 

}

 

修改activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.ssln.MainActivity" >

    <com.ssln.MyView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         />
</RelativeLayout>

 运行效果如下

posted @ 2014-09-30 23:03  似水v流年  阅读(716)  评论(0编辑  收藏  举报