利用View类的postInvalidate()方法进行重绘,一边加载图片,一边重绘,只要你控制好同步问题就没问题
解决方案 »
- android怎么判断Ftp上是否有某个文件,如update。求代码
- Spinner控件如何设置文字颜色呢?
- 文件路径Uri中带中文,系统默认转成16进制码,在getData()后怎么处理还原中文呢?
- 安智市场更新手机上的应用是怎么做到的?
- 【请教】android有封装了socket的lib吗?像ipworks的ipport类那样的
- 求教關於自動對焦的問題
- 我想写一个公司通讯录的程序
- 紧急:如何将屏幕上的图片隐藏,谢了?
- android 重写用来显示Listview的BaseAdapter后,通过ImageButton监听实现卡片翻转 ,不成功。。
- Android空指针的问题。。
- CSDN有出微博的计划吗?
- 如何响应 乐phone的默认“返回”按钮
一般游戏加载地图的时候你都能看到有个loading...的提示,如果图片资源不多,那还是可以一边显示一边加载的
boolean mbLoop = false; // 定义 SurfaceHolder 对象
SurfaceHolder myHolder = null;
int count = 0;
int y = 50; public GameSurfaceView(Context context) {
super(context);
// TODO Auto-generated constructor stub // 实例化 Surfaceholder
myHolder = this.getHolder(); // 添加回调
myHolder.addCallback(GameSurfaceView.this);
GameSurfaceView.this.setFocusable(true);
mbLoop = true;
} // 绘图循环
public void run() {
// TODO Auto-generated method stub
while (mbLoop) {
try {
Thread.sleep(1000);
} catch (Exception e) { }
synchronized (myHolder) {
Draw();
}
} } // 在 Surface 的大小发生改变时激发
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub } // 在 Surface 创建时触发
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
// 开启绘图线程
new Thread(GameSurfaceView.this).start(); } // 在 Surface 销毁时触发
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
// 停止循环
mbLoop = false; } // 绘图方法
public void Draw() {
// 锁定画布,得到 canvas
Canvas canvas = myHolder.lockCanvas(); if (myHolder == null || canvas == null) {
return;
} if (count < 100) {
count++;
} else {
count = 0;
} // 绘图
Paint myPaint = new Paint();
myPaint.setAntiAlias(true);
myPaint.setColor(Color.BLACK);
// 绘制矩形——清屏作用
canvas.drawRect(0, 0, 320, 480, myPaint); switch (count % 4) {
case 0:
myPaint.setColor(Color.BLUE);
break;
case 1:
myPaint.setColor(Color.GREEN);
break;
case 2:
myPaint.setColor(Color.RED);
break;
case 3:
myPaint.setColor(Color.YELLOW);
break;
default:
myPaint.setColor(Color.WHITE);
break;
}
// 绘制圆形
canvas.drawCircle((320 - 25) / 2, y, 50, myPaint);
// 绘制后解锁,必须解锁才能显示
myHolder.unlockCanvasAndPost(canvas);
}}