继上一个版本的改进,提高了效率

主要改动点在surfaceView draw使其后台循环更新,将矩形换成闪烁圆饼,

好吧废话少说,先上图!

package com.logan.androidtest;import android.app.Activity;import android.os.Bundle;import com.logan.androidtest.view.GameSurfaceView;/** *  * @author xuan.lx * */public class GameSurfaceViewActivity extends Activity {public static float y = 0;public static float x = 0;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GameSurfaceView view = new GameSurfaceView(this);setContentView(view);}}
package com.logan.androidtest.view;import com.logan.androidtest.Constant;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.Log;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;/** *  * @author xuan.lx *  */public class GameSurfaceView extends SurfaceView implementsSurfaceHolder.Callback {public static float y = 0;public static float x = 0;SurfaceView surfaceView;SurfaceHolder sfh;int miCount = 0;// 控制循环boolean mbLoop = false;public GameSurfaceView(Context context) {super(context);sfh = this.getHolder();// 获取holdersfh.addCallback(this);}@Overridepublic void surfaceCreated(SurfaceHolder holder) {new DrawImage().start();}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// 停止循环mbLoop = false;}/** * 绘图线程 */class DrawImage extends Thread {public void run() {while (!mbLoop) {try {Thread.sleep(100);} catch (Exception e) {}synchronized (sfh) {draw();}}}// 绘图方法public void draw() {// 锁定画布,得到canvasCanvas canvas = sfh.lockCanvas();if (sfh == null || canvas == null) {return;}if (miCount < 100) {miCount++;} else {miCount = 0;}// 绘图Paint mPaint = new Paint();mPaint.setAntiAlias(true);// 绘制矩形--清屏作用canvas.drawColor(Color.BLACK);switch (miCount % 4) {case 0:mPaint.setColor(Color.BLUE);break;case 1:mPaint.setColor(Color.GREEN);break;case 2:mPaint.setColor(Color.RED);break;case 3:mPaint.setColor(Color.YELLOW);break;default:mPaint.setColor(Color.WHITE);break;}canvas.drawCircle(x, y, 20, mPaint);// 绘制后解锁,绘制后必须解锁才能显示sfh.unlockCanvasAndPost(canvas);}//原来的矩形public void drawRect() {// 绘图Paint mPaint = new Paint();mPaint.setColor(Color.BLUE);Canvas c = sfh.lockCanvas(null);c.drawColor(Color.BLACK);// 清除画布c.drawRect(x, y, x + 40, y + 40, mPaint);sfh.unlockCanvasAndPost(c);// 更新屏幕显示内容Log.e(Constant.TAG = "ControlViewView", "DrawImage");}}// 触摸事件public boolean onTouchEvent(MotionEvent event) {y = event.getY();x = event.getX();return true;}}

更多相关文章

  1. Android——在SurfaceView上绘图
  2. android 如何用代码生成圆角Bitmap图片
  3. Android唤醒屏幕并解锁
  4. nexus6 升级5.1
  5. Android(安卓)path.op 和canvas.clipPath使用一例
  6. Android(安卓)绘制带有边框的文字
  7. android 图片转 圆形和圆角矩形
  8. Android(安卓)View与SurfaceView的手绘板制作
  9. Android(安卓)opencv人脸识别

随机推荐

  1. Android ApiDemos示例解析(91):OS->SMS M
  2. Android getText(@string/a)和直接使用字符
  3. Android应用开发提高系列(5)――Android动
  4. Android内核剖析
  5. Android UI加速
  6. Android 水波纹点击效果
  7. android:layout_weight属性
  8. Android中的进程生命周期
  9. android 默认签名 debug签名
  10. android的selector(背景选择器)