展会信息港展会大全

android surfaceview 指哪画哪升级版!
来源:互联网   发布日期:2015-10-03 15:14:17   浏览:1983次  

导读:继上一个版本的改进,提高了效率主要改动点在surfaceView draw使其后台循环更新,将矩形换成闪烁圆饼,好吧废话少说,先上图!package com.logan.androidtest;import android.app.Activity;import android.o......

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

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

好吧废话少说,先上图!

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 implements

SurfaceHolder.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();// 获取holder

sfh.addCallback(this);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

new DrawImage().start();

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

@Override

public 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() {

// 锁定画布,得到canvas

Canvas 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;

}

}

赞助本站

人工智能实验室

相关热词: surfaceview

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港