调用Handler.post(Runnable r)方法,Runnable运行在UI所在线程,所以可以直接调用View.invalidate()
package com.ray.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
public class TestHandler extends Activity {
private MyView myView;
private Handler mHandler;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView = new MyView(this);
mHandler = new Handler();
mHandler.post(new Runnable(){
@Override
public void run() {
myView.invalidate();
mHandler.postDelayed(this, 5);
}
});
setContentView(myView);
}
class MyView extends View{
private float x = 0f;
public MyView(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
x+=1;
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);
canvas.drawRect(x, 40, x+40, 80, mPaint);
}
}
}
在新线程里更新UI,可以直接postInvalidate()
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
myView = new MyView(this);
this.setContentView(this.myView);
new Thread(new myThread()).start();
}
class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
myView.postInvalidate();
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
|
|
http://www.iteye.com/topic/435147#1116657
分享到:
相关推荐
主要介绍了C#子线程更新UI控件的方法,在桌面应用程序中控制UI界面有着不错的实用价值,需要的朋友可以参考下
Winform实现多线程异步更新UI(进度及状态信息) 实例代码
Android ,非MainActivity类中的子线程和UI线程通讯,并且获取子线程传递的信息,更新UI界面。需要使用okHttp类库
qt编程_在子线程中更新UI界面
WPF后台线程更新UI---http://www.tuicool.com/articles/NbieE3M
Android 线程 更新UI 操作UI
Demo测试跨线更新UI 第一种 : Thread 达到跨线程更新UI 虽然使用Dispatcher.Invoke 和模拟winform 里面的DoEvent 但是运行中关闭还是会有异常,而且耗资源高; 第二种 : DispatcherTimer 失败:UI还是会卡顿; 第三...
ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面
实时更新UI(信号与槽方式) 程序示例
一个用多线程在UI线程内安全更新UI界面控件来避免UI访问冲突的程序
Xamarin.Android 非UI线程更新UI
WPF 使用线程更新绑定数据的UI控件值,从而使得界面不卡顿。
BackgroundWorker组件和Thread更新UI界面对比
Android Handler定时更新UI
通过委托,在子线程更新主线程UI界面
android更新ui方法大合集,整合了4种方法,做成了一个小demo
通过Messenger实现Android Service更新UI
2024最新UI发卡盗U支持多语言更新UI界面支持多个主流钱包
使用android AIDL 方式实现跨进程更新UI,所有源码demo,相关博客地址https://blog.csdn.net/CrazyMo_/article/details/89674879
Android通过AIDL实现跨进程更新UI csdn博客地址:http://blog.csdn.net/chenzheng8975/article/details/54964345