Android更新Ui进阶精解(一)
《代码里的世界》
用文字札记描绘自己 android学习之路
转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45128303
【导航】
Android更新Ui的几种方法和见解 android更新ui基本常用方法
Android更新Ui进阶精解(一) android ui线程检查机制
Android更新Ui进阶精解(二) android 线程更新UI机制
1.回顾
前面一篇简单讲了如何快速使用handler更新ui。稍微补充一些:
- 更新ui时可以直接使用这种方法,你不须非要再new一个子线程才使用,比如:
1
2
3
4
5
6
7
8
9
10
11
12
13viewPostBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
viewPostBtn.post(new Runnable() {
@Override
public void run() {
titleView.setText("viewPost——Result");
}
});
}
});
Android更新Ui的几种方法和见解
《代码里的世界》
用文字札记描绘自己 android学习之路
转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/45115047
1. 简述
先贴一个我们刚做Android开发时候最容易遇到的一个错误异常 AndroidRuntimeException :“Only the original thread that created a view hierarchy can touch its views”
具体原因是当我们在对ui做出更改时,Android检查我们当前的操作线程是否为UI线程,若不是即报该异常。(详见 ViewRootImpl类的checkThread方法)。
2. 方案
那么我们该如何更新Ui呢,这里简要使用和讲述的是Handler。先简述概念:Adroid在运行时会创建一个UiThread的主线程来负责控制UI界面的显示、更新和控件交互。其他线程则通过handler将更新逻辑等消息事件(Message) push到主线程的消息队列(MessageQueue),最后由主线程有序地处理这些消息事件(handleMessage),实现对界面的更新和控制。
本文主要讲述更新UI的方法和使用技巧,关于更新过程的原理内容请关注后边的 Android更新Ui进阶。
其中,常用的几种方法简单概括有:
- handler.sendMessage();
- handler.post();
- 在activity中可以 runOnUiThread();
- 在子view中可以 view.post()
Markdown 入门手册
一. 简单功能
功能 | 效果 | Markdown代码 | 备注 |
---|---|---|---|
粗体 | 粗体 | **粗体** |
两边加** |
斜体 | 斜体 | _斜体_ |
两边加_ |
中划线 | ~~中划线~~ |
两边加~~ | |
单行代码 | Log.i("Hello World!") |
`Log.i(“Hello World!”)` | 两边加` |
插入图片 | ![Image](http://www.trinea.cn/rss.png) |
[] 中间为占位符,() 中间为图片链接 | |
链接 | Visit Github | [Visit Github](http://www.github.com) |
[] 中间为显示文字,() 中间为链接 |
快速学习Markdown
使用Markdown写博客已经三个月了,对这个标记语言很是喜欢。现在流行的教程,要么就是太复杂太难以理解,要么就是太简单太肤浅,稍微高级点的用法没有提及。本文的初衷就是用最容易理解的方式,把Markdown入门到高级用法一一介绍给读者。看完之后,你不仅可以开始使用Markdown写东西,在日常使用中也随时可以打开这篇博客参考各种用法。
Markdown 简明语法手册
如何参与一个GitHub开源项目
本文是Github官方给出的参与Github上开源项目的一些指导,对希望加入开源社区的开发者是一个不错的参考。
Android基础_介绍
##1. 3G、4G
- 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,较之前的2G和2.5G在数据传输速度上有很大提升。
- 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,几乎可以满足人们的所有传输数据的需求。
目前主流的3G技术标准有三种:
- WCDMA:全球80%以上的3G网络都是采用此种制式。中国联通运营。186
- CDMA2000:目前日韩及北美使用较多。中国电信运营。 189
- TD-SCDMA:中国自主知识产权的3G通信技术。中国移动运营。 188
目前主流的4G技术为LTE,但还没有被广泛应用:
GSM → GPRS → EDGE → WCDMA → HSDPA → HSDPA+ → LTE
Android动画
##1. AlphaAnimation
1
2
3
4
5
6
7
RelativeLayout rl_splash = (RelativeLayout) findViewById(R.id.rl_splash);
//播放动画效果
AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);
//设置Alpha动画的持续时间
animation.setDuration(2000);
//播放Alpha动画
rl_splash.setAnimation(animation);
深入理解ViewGroup
深入到ViewGroup内部,了解ViewGroup的工作,同时会阐述更多有关于View的相关知识。以便为以后能灵活的使用自定义空间打更进一步的基础。
##ViewGroup定义
一个ViewGroup是一个可以包含子View的容器,是布局文件和View容器的基类。在这个类里定义了ViewGroup.LayoutParams类,这个类是布局参数的子类。
其实ViewGroup也就是View的容器。通过ViewGroup.LayoutParams来指定子View的参数。
ViewGroup作为一个容器,为了制定这个容器应有的标准所以为其指定了接口
public abstract class ViewGroup extends View implements ViewParent, ViewManager
这两个接口这里不研究,如果涉及到的话会带一下。ViewGroup有小4000行代码,下面我们一个模块一个模块分析。