- surfview 的生命周期分别为surfaceCreated(创建) surfaceChanged(改变) surfaceDestroyed(销毁),通过surfview的生命周期来控制线程 通过线程控制draw()方法来控制surfview的内容的变化,实现ontouchevet方法实现对surfview的点击事件
-
- package com.zhy.view;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.PixelFormat;
- import android.util.AttributeSet;
- import android.view.SurfaceHolder;
- import android.view.SurfaceHolder.Callback;
- import android.view.SurfaceView;
- public class GameFlabbyBird extends SurfaceView implements Callback, Runnable
- {
- private SurfaceHolder mHolder;
- /**
- * 与SurfaceHolder绑定的Canvas
- */
- private Canvas mCanvas;
- /**
- * 用于绘制的线程
- */
- private Thread t;
- /**
- * 线程的控制开关
- */
- private boolean isRunning;
- public GameFlabbyBird(Context context)
- {
- this(context, null);
- }
- public GameFlabbyBird(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- mHolder = getHolder();
- mHolder.addCallback(this);
- setZOrderOnTop(true);// 设置画布 背景透明
- mHolder.setFormat(PixelFormat.TRANSLUCENT);
- // 设置可获得焦点
- setFocusable(true);
- setFocusableInTouchMode(true);
- // 设置常亮
- this.setKeepScreenOn(true);
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder)
- {
- // 开启线程
- isRunning = true;
- t = new Thread(this);
- t.start();
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height)
- {
- // TODO Auto-generated method stub
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder)
- {
- // 通知关闭线程
- isRunning = false;
- }
- @Override
- public void run()
- {
- while (isRunning)
- {
- long start = System.currentTimeMillis();
- draw();
- long end = System.currentTimeMillis();
- try
- {
- if (end - start < 50)
- {
- Thread.sleep(50 - (end - start));
- }
- } catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
- }
- private void draw()
- {
- try
- {
- // 获得canvas
- mCanvas = mHolder.lockCanvas();
- if (mCanvas != null)
- {
- // drawSomething..
- }
- } catch (Exception e)
- {
- } finally
- {
- if (mCanvas != null)
- mHolder.unlockCanvasAndPost(mCanvas);
- }
- }
- }
surfview 的一般使用
最新推荐文章于 2024-06-16 21:01:54 发布