如题

解决方案 »

  1.   

    给你个例子吧
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;public class GameSurfaceView extends SurfaceView 
     implements SurfaceHolder.Callback,Runnable
    {
    //控制循环
    boolean mbLoop = false;

    //定义SurfaceHolder对象
    SurfaceHolder mSurfaceHolder = null;
    int miCount = 0;
    int y = 50;
    public GameSurfaceView(Context context)
    {
    super(context); // 实例化SurfaceHolder
    mSurfaceHolder = this.getHolder(); // 添加回调
    mSurfaceHolder.addCallback(this);
    this.setFocusable(true); mbLoop = true;
    }
    // 在surface的大小发生改变时激发
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
    { } // 在surface创建时激发
    public void surfaceCreated(SurfaceHolder holder)
    {
    //开启绘图线程
    new Thread(this).start();
    } // 在surface销毁时激发
    public void surfaceDestroyed(SurfaceHolder holder)
    {
    // 停止循环
    mbLoop = false;
    } // 绘图循环
    public void run()
    {
    while (mbLoop)
    {
    try
    {
    Thread.sleep(200);
    }
    catch (Exception e)
    {

    }
    synchronized( mSurfaceHolder )
    {
    Draw();
    }

    }
    } // 绘图方法
    public void Draw()
    {
    //锁定画布,得到canvas
    Canvas canvas= mSurfaceHolder.lockCanvas(); if (mSurfaceHolder==null || canvas == null )
    {
    return;
    }

    if (miCount < 100)
    {
    miCount++;
    }
    else
    {
    miCount = 0;
    }
    // 绘图
    Paint mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setColor(Color.BLACK);
    //绘制矩形--清屏作用
    canvas.drawRect(0, 0, 320, 480, mPaint);
    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((320 - 25) / 2, y, 50, mPaint);
    // 绘制后解锁,绘制后必须解锁才能显示
    mSurfaceHolder.unlockCanvasAndPost(canvas);
    }
    }
      

  2.   


    朋友,你理解错了哦,我说的是怎么在surfaceview里面进行图片的释放,不是绘画,具体在哪里释放比较好
      

  3.   

    好好再熟悉下 Activity的生命周期
    思路没问题,估计是释放和加载的地方不对
    另外一方面就是,一个游戏只需要一个view和一个activity足以
    即使手机网游也只需要一个view和一个activity足以PS:Himi指点的