分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
何为脏矩形?比如surfaceview上绘制旋转图片的时候,只刷新一个特定的矩形区域就可以了。这个矩形区域就是脏矩形。在surfaceview上 canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //获取画布 像这种带rect参数的就是脏矩形的刷新。
请看源码:
package yan.guoqi.rectphoto;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.Rect;import android.util.AttributeSet;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;public class DrawSurfaceView extends SurfaceView implements SurfaceHolder.Callback{ private static final String tag2 = "DrawSV"; private boolean runFlag = true; protected SurfaceHolder holder; private Bitmap rotateImg; private Thread myThread; public DrawSurfaceView(Context context, AttributeSet attrs) //构造函数 { super(context, attrs); // TODO Auto-generated constructor stub rotateImg = BitmapFactory.decodeResource(getResources(), R.drawable.rotate_circle); rotateImg = Bitmap.createScaledBitmap(rotateImg, 100, 100, true); holder = this.getHolder(); holder.addCallback(this); holder.setFormat(PixelFormat.TRANSPARENT); //顶层绘制SurfaceView设成透明 this.setZOrderOnTop(true); myThread = new Thread(new MyThread()); } public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceChanged..."); } public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceCreated..."); //启动自定义线程 myThread.start(); } public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceDestroyed..."); //终止自定义线程 runFlag = false; myThread.interrupt(); } /*自定义线程*/ class MyThread implements Runnable{ public void run() { // TODO Auto-generated method stub Canvas canvas = null; int rotate = 0; while(runFlag){ try { canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //获取画布 Paint paint = new Paint(); //canvas.drawBitmap(rotateImg, 0, 0, paint); //绘制旋转的背景 //创建矩阵控制图片旋转和平移 Matrix matrix = new Matrix(); //设置旋转角度 matrix.postRotate((rotate += 48) % 360, rotateImg.getWidth() / 2, rotateImg.getHeight() / 2); //设置左边距和上边距 matrix.postTranslate(