Android攻城狮 Android中更新UI的几种方式

Android中更新UI的几种方式:
1. Activity 的 runOnUiThread()
2. Handler 的 post()
3. Handler 的 sendMessage()
4. View 的 post()
 1 public class FiveActivity extends Activity {
 2
 3     private TextView textView;
 4
 5     private Handler handler = new Handler() {
 6         public void handleMessage(android.os.Message msg) {
 7             textView.setText("ok2");
 8         };
 9     };
10
11     private void handle1() {
12
13         handler.post(new Runnable() {
14
15             @Override
16             public void run() {
17                 // TODO Auto-generated method stub
18                 textView.setText("ok1");
19             }
20         });
21
22     }
23
24     // 最常见的的
25     public void handle2() {
26         handler.sendEmptyMessage(1);
27     }
28
29     public void updateUI() {
30         runOnUiThread(new Runnable() {
31
32             @Override
33             public void run() {
34                 // TODO Auto-generated method stub
35                 textView.setText("ok3");
36             }
37         });
38     }
39
40     public void viewUI() {
41         textView.post(new Runnable() {
42
43             @Override
44             public void run() {
45                 // TODO Auto-generated method stub
46                 textView.setText("ok4");
47             }
48         });
49     }
50
51     @Override
52     protected void onCreate(Bundle savedInstanceState) {
53         // TODO Auto-generated method stub
54         super.onCreate(savedInstanceState);
55         setContentView(R.layout.five);
56         textView = (TextView) findViewById(R.id.textView1);
57         new Thread() {
58             public void run() {
59                 try {
60                     Thread.sleep(2000);
61                     // handle1()
62                     // handle2();
63                     // updateUI();
64                     viewUI();
65                 } catch (InterruptedException e) {
66                     // TODO Auto-generated catch block
67                     e.printStackTrace();
68                 }
69             }
70         }.start();
71     }
72 }
时间: 2024-10-11 00:33:14

Android攻城狮 Android中更新UI的几种方式的相关文章

创业公司求IOS、Android攻城狮一枚

地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会: 1. IOS或者Android开发 2.能够处理类似微视/秒拍的视频录制功能 3.熟悉json 4.做过第三方登录 5.爱学习 6.no zuo 7.工作经验不限 如果你适合,就别再犹豫,发简历到[email protected](饶先生),或者加TA QQ随便骚扰,TA正在求骚扰 创业公司求IOS.Android攻城狮一枚,布布扣,bubuko.com

Android 在子线程中更新UI的几种方法

第一种: new Handler(context.getMainLooper()).post(new Runnable() { @Override public void run() { // 在这里运行你要想的操作 比方直接在这里更新ui或者调用回调在 在回调中更新ui } }); context是你传过来的context对象 另外一种: // 假设当前线程是UI线程,那么行动是马上运行.假设当前线程不是UI线程,操作是公布到事件队列的UI线程 // 由于runOnUiThread是Activ

android 不能在子线程中更新ui的讨论和分析

问题描述 做过android开发基本都遇见过ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是只能在主线程中更改ui,子线程要修改ui只能post到主线程或者使用handler之类.但是仔细看看exception的描述并不是这样的,"Only the original thread that created a view hierarchy can touch its views",只有创建该 view 布局层次的原始线程

Android攻城狮Handler简介

Handler是什么? Handler是Android提供的一套用来更新UI的机制,也是一套消息处理机制,可以通过它发送消息,也可以通过它处理消息. 所有Activity生命周期回调的方法(例如onCreate().onDestory()等等),都是通过handler机制去发送消息的,然后根据不同的消息(message)做相应的分支处理.例如发送一个消息给 Framework,告知需要调用onCreate()或onDestory()方法.实际上在 Framework 当中,Activity的交互

Android更新UI的四种方式

前言 相信初学Android开发的朋友来说,应该都会遇到一个问题,我们开启了一个线程,在这个线程里面我们进行了更新UI的操作,也许是在TextView显示了一行文字,也许是改变了ImageView显示的图片,虽然只是看似简单并且正确的操作,但是Android系统让你的程序光荣的崩溃了,并且你还不知道为什么错,这才是最痛苦的,曾经深受这种痛苦的我,为了不再让这种痛苦蔓延下去,我决定把更新UI的几种方法给大家好好说说,让大家在Thread的run方法中可以随心所欲的更新UI,再也不用痛苦了. 实现

老问题:Android子线程中更新UI的3种方法

在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: //完成主界面更新,拿到数据 S

Android攻城狮基础动画

Android基础动画 1. Tween Animation 变换动画 2. Frame Animation 帧动画 3. Layout Animation 布局动画 4. Property Animation 属性动画 Tween Animation(变换动画)在Android中又被分为四种: Alpha:渐变透明度动画 Scale:渐变尺寸缩放动画 Translate:位置移动动画 Rotate:旋转动画 Tween Animation共同属性: 1. Duration:动画持续时间(单位:

Android攻城狮动画组合

组合动画 案例一(续播1): 两个动画A和B,先播放动画A,设置A的AnimationListener(会重写3个方法),当其中一个方法onAnimationEnd()触发,也就是当A播放完毕的时候,开始播放B.核心代码如下: Animation loadAnimation = AnimationUtils.loadAnimation( this, R.anim.translate ); image.startAnimation(loadAnimation); // 开启动画A Animatio

Android攻城狮属性动画赏析

1 import android.support.v7.app.ActionBarActivity; 2 import android.support.v7.app.ActionBar; 3 import android.support.v4.app.Fragment; 4 import android.animation.AnimatorSet; 5 import android.animation.ObjectAnimator; 6 import android.animation.Prop