android 游戏开发中surfaceview画的图片是怎么释放的?在什么时候释放? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个例子吧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); }} 朋友,你理解错了哦,我说的是怎么在surfaceview里面进行图片的释放,不是绘画,具体在哪里释放比较好 好好再熟悉下 Activity的生命周期思路没问题,估计是释放和加载的地方不对另外一方面就是,一个游戏只需要一个view和一个activity足以即使手机网游也只需要一个view和一个activity足以PS:Himi指点的 大侠救命了!BitmapFactory.decodeFile一直返回空 通话记录软件 Android真机通过蓝牙(模拟成COM口)与PC交换数据的问题。 手机上文件下载和传统的文件下载有什么区别? 简单问题,在线等回答 Android MediaPlayer 播放类 JNI层的newstringutf内存问题。。 奇怪的布局文件,明明没错 模拟器访问网络 求助!安卓sqlite android 搜索功能动画界面 谁能帮忙解决下这个android问题。做过android游戏用过surfaceview的来看看。
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);
}
}
朋友,你理解错了哦,我说的是怎么在surfaceview里面进行图片的释放,不是绘画,具体在哪里释放比较好
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以PS:Himi指点的