手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android开发教程之handler异步更新ui
android开发教程之handler异步更新ui
摘要:其实文字游戏程序很简单,就是一个view和一个Activity,在利用下handier和postInvalidate()更新UI调用Hand...

其实文字游戏程序很简单,就是一个view和一个Activity,在利用下handier和postInvalidate()更新UI

调用Handler.post(Runnable r)方法,Runnable运行在UI所在线程,所以可以直接调用View.invalidate()

复制代码 代码如下:

packagecom.Test.androidtest;

importandroid.app.Activity;

importandroid.content.Context;

importandroid.graphics.Canvas;

importandroid.graphics.Color;

importandroid.graphics.Paint;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.view.View;

publicclassTestHandlerextendsActivity{

privateMyViewmyView;

privateHandlermHandler;

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

myView=newMyView(this);

mHandler=newHandler();

mHandler.post(newRunnable(){

@Override

publicvoidrun(){

myView.invalidate();

mHandler.postDelayed(this,5);

}

});

setContentView(myView);27}

classMyViewextendsView{30privatefloatx=0f;31publicMyView(Contextcontext){

super(context);33

}

protectedvoidonDraw(Canvascanvas){

super.onDraw(canvas);37x+=1;

PaintmPaint=newPaint();

mPaint.setColor(Color.BLUE);

canvas.drawRect(x,

,x+40,80,mPaint);41}

}

}

在新线程里更新UI,可以直接postInvalidate()

复制代码 代码如下:

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

myView=newMyView(this);

this.setContentView(this.myView);

newThread(newmyThread()).start();

}

classmyThreadimplementsRunnable{

publicvoidrun(){

while(!Thread.currentThread().isInterrupted()){

try{

myView.postInvalidate();

Thread.sleep(100);

}catch(InterruptedExceptione){

Thread.currentThread().interrupt();

}

}

}

}

【android开发教程之handler异步更新ui】相关文章:

Android开发之实现手指直接拖动图片移动

Mac 下搭建Android开发环境

Android开发之电源管理

Android开发之异步获取并下载网络资源

Android动画之ScaleAnimation

android 开发教程之日历项目实践(三)

Android开发之OpenGL ES 基础

android开发之调用手机的摄像头使用MediaRecorder录像并播放

Android开发笔记之:Splash的实现详解

android IPC之binder通信机制

精品推荐
分类导航