总结下:?一个应用程序中,多个不同的activity之间,以及一个activity多个不同的实例间,又是怎样的通讯机制?
通常有四种:
Intent用于组件之间的消息传递,可以跨进程与线程。但是跨进程需要和其他机制捆绑(比如binder)。
(注意:Binder机制是android中实现的进程间通信的架构)
Handle 一般用于主线程(UI线程)界面的更新,通过消息传递机制来实现。(需要使用Looper)。此机制一般用于线程通讯。
Broadcast 一般和intent一起用,主要用于进程间通讯比较多。
Service 一般和intent一起用,可以绑定也可以不绑定,用于进程间通讯。
?
?
线程间同步:
同步代码块、同步方法
其实还有一些控制执行顺序的API,与锁一起用,简单说就是让谁先堵塞,让谁先执行。
?
?
注意:setCancelable 可否取消是针对 back按键说的。
设置属性:
有时候也会这么用,让button设置为wrap_content,EditText占满剩下的屏幕
在相对布局中,所有的属性都是相对于父控件或者父控件来说的。这点需要明确。
而且在布局文件中,所有的控件声明有顺序。比如在button3 上面的button1可以先引用没有声明button3.这样是错误的。
?
三组属性:
Layout_alignParentLeft layout_alignParentRight 还有 top bottom missing layout_centerInparent
2)相对于控件
Layout_above below toleftof torightof 等等
?
还有一种是相对于控件进行定位的属性: layout_alignLeft 等。
无法为此布局中的控件指定宽度,我们可以对每行进行合并单元格,属性layout_span
<tableRow > 表示一行。 每一个控件表示一列。
还有一个重要属性是用来适配的,android:stretchColumns=1 表示对第二列进行拉伸。0表示对第一列进行拉伸。
如图:
建立title_layout,然后我们可以将此控件放入到其他的控件中去。如下面所示:
只需要加入代码: <include layout="@layout/title_layout"/>
当然,系统自带的标题栏我们需要隐藏掉。As中自动隐藏。Eclipse当中,需要加入属性: requestWindowFeature(Window.FEATURE_NO_TITLE);
?
?
当然我们也可以通过另一种方式加入自定义控件:
通过LayoutInflate的from()方法构建LayoutInflater对象,然后调用inflate加载一个布局文件,参数一加载我们要添加的布局文件,第二个从那时给加载好的布局文件添加一个父布局。
这里我们传入this。表示指定为TitleLayout。
和上面的运行结果一样。
当然,我们也可以为自定义控件加入按键处理等方法,这比include那种方式更灵活,实际开发中,这种方法用的比较多。
?
下面有一部分是优化代码:
?
注意:上面的步骤中,有些资源需要自己添加,比如本例中,添加的资源有一些图片如下:
Android规定 160dpi (屏幕的密度) 在此 1dp = 1px . px表示像素。dp还可以写成dpi,表示密度与像素无关。 sp 与dp类似。
记住:dp一般指定控件与布局的大小。sp指定文字的大小。
这是一款神器,可以指定.png图片哪些部分可以被拉伸,哪些不可以被拉伸。此应用程序在sdk---tool ----draw9patch.bat 中。
文件命名为message_left.9.png,但我们在xml指定的时候,就是message_left,后面是他的扩展名。
步骤: main_layout/msg_layout、实体类、适配器类、挂载适配器
详细步骤见程序。
?
原文:http://www.cnblogs.com/zhuxuekui/p/4469718.html