Hendler 常用方法(二)
来源:互联网 发布:短网址生成源码 编辑:程序博客网 时间:2024/05/17 07:33
1.Hendler的认识
<1>Android提供给我们的一套更新UI的机制
<2>消息处理机制,我们通过它来发送消息和处理消息
Activity的生命周期的和Hendler密切相关,都是通过Handler发送Message来回调生命周期内的方法。(你可以跟进源码层去了解)
2.Hendler常用方法解析
<1>Post(Runnable r)方法
<TextView android:id="@+id/textname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="Hello World!" />
public class MainActivity extends AppCompatActivity { private TextView mtextTv; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); new Thread(){ @Override public void run() { try { Thread.sleep(1000); handler.post(new Runnable() { @Override public void run() { mtextTv.setText("你好!!"); } }); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); } private void init() { mtextTv = (TextView) findViewById(R.id.textname); }}
<2>PostDelayed()
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_below="@+id/textname" android:layout_centerHorizontal="true" android:layout_marginTop="170dp" />
public class MainActivity extends AppCompatActivity { private TextView mtextTv; private ImageView mageTv; private Handler handler = new Handler(); private int images[] ={R.drawable.ga,R.drawable.niy,R.drawable.yuan}; private int index; private MyRunnable runnable = new MyRunnable(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mtextTv = (TextView) findViewById(R.id.textname); mageTv = (ImageView) findViewById(R.id.imageView); handler.postDelayed(runnable,1000); } class MyRunnable implements Runnable{ @Override public void run() { index++; index = index % 3;//循环赋值 mageTv.setImageResource(images[index]); handler.postDelayed(runnable,1000); } }}<3>sendMessage()可以发送消息也可以发送空消息,也可以发送对象
public class MainActivity extends AppCompatActivity { private TextView mtextTv; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { // mtextTv.setText(msg.arg1); mtextTv.setText(msg.obj+"");//注意这块的获取obj的写法 "" } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mtextTv = (TextView) findViewById(R.id.textname); // Message message = new Message();// message.arg1 = 20;// handler.sendMessage(message); Message message = handler.obtainMessage(); Person person = new Person(); message.obj = person; handler.sendMessage(message); //handler.removeCallbacks();handler可以移除这块要发送的消息 } class Person{ String name ="王二小"; int age = 19; //从写toString()不让其乱码 @Override public String toString() { return "name="+name+"age="+age; } }}
0 0
- Hendler 常用方法(二)
- 常用排序方法(二)
- 多线程常用方法(二)
- String常用方法(二)
- 学习ExtJS(二) Button常用方法
- python与oracle(二)常用方法
- 常用的排序方法(二)
- dhtmlxtree学习笔记二(常用方法)
- 学习ExtJS(二) Button常用方法
- 常用的方法、知识(二)
- iOS常用公共方法(二)
- Java多线程(二)- 常用方法
- JavaScript Array的常用方法(二)
- Matplotlib.pyplot 常用方法(二)
- 数组常用方法二
- 《语义网》译文(TIM BERNERS-LEE, JAMES HENDLER and ORA LASSILA )
- (二十二)常用方法(工具方法)的抽取
- c#常用编程方法 (二)
- ROS学习报告v3.0
- JAVA设计模式单实例模式
- shell脚本之判断输入参数是否为整数值
- bzoj 4725: [POI2017]Reprezentacje ró?nicowe 暴力
- HTTP Content-Type类型
- Hendler 常用方法(二)
- Leetcode 148 SortList
- 1045. Favorite Color Stripe (30)
- 下载yahoo股票历史数据
- redis的事务
- OpenCV学习笔记三(2016年12月4日)像素值的读写
- u-boot-2016.11移植nandfalsh(基于s5pv210)
- 计算器小程序与衍生问题
- 线程实现并发服务器