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>
运行效果如下
时间: 2024-12-25 23:15:48