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 }
时间: 04-22

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的讨论和分析

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

Android更新UI的四种方式

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

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攻城狮四种基础动画

AlphaAnimation(透明动画) 1.xml文件 <set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 渐变动画,表示从透明度10%到100%,持续时间为1秒 --> <alpha android:fromAlpha="0.1" android:toAlpha="1" android:duration="1000&

Android攻城狮CheckBox&amp;RadioGroup&amp;AutoCompleteTextView&amp;MultiAutoCompleteTextView&amp;ToggleButton

给子类加构造函数Source----Generate constractor from superclass 跑马灯效果的实现(Textview 循环): 1.定义textView标签的4个属性: android:singleLine="true"//使其只能单行 android:ellipsize="marquee"//去掉省略号 android:focusable = "true"//得到焦点 android : focusableInTou

Android更新UI的五种方式

handler.post activity.runOnUiThread view.post handler+Thread AsyncTask 例子: package com.chao.updateui; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http

更新UI的四种方式

使用Handler消息传递机制: 使用AsyncTask异步任务: 使用runOnUiThread(action)方法: 使用Handler的post(Runnabel r)方法: 小结: 1.如果只是单纯的想要更新UI而不涉及到多线程的话,使用View.post()就可以了; 2.需要另开线程处理数据以免阻塞UI线程,像是IO操作或者是循环,可以使用Activity.runOnUiThread(); 3.如果需要传递状态值等信息,像是蓝牙编程中的socket连接,就需要利用状态值来提示连接状态