第一行代码读书笔记2+常见错误分析

总结下: 一个应用程序中,多个不同的activity之间,以及一个activity多个不同的实例间,又是怎样的通讯机制?

通常有四种:

Intent用于组件之间的消息传递,可以跨进程与线程。但是跨进程需要和其他机制捆绑(比如binder)。

(注意:Binder机制是android中实现的进程间通信的架构

Handle 一般用于主线程(UI线程)界面的更新,通过消息传递机制来实现。(需要使用Looper)。此机制一般用于线程通讯。

Broadcast 一般和intent一起用,主要用于进程间通讯比较多。

Service 一般和intent一起用,可以绑定也可以不绑定,用于进程间通讯。

 

 

线程间同步:

同步代码块、同步方法

其实还有一些控制执行顺序的API,与锁一起用,简单说就是让谁先堵塞,让谁先执行。

 

 

  1. 警告对话框用法

    注意:setCancelable 可否取消是针对 back按键说的。

  2. 进度条用法

    设置属性:

  3. 权重的用法

    有时候也会这么用,让button设置为wrap_content,EditText占满剩下的屏幕

  4. 相对布局

    在相对布局中,所有的属性都是相对于父控件或者父控件来说的。这点需要明确。

    而且在布局文件中,所有的控件声明有顺序。比如在button3 上面的button1可以先引用没有声明button3.这样是错误的。

     

    三组属性:

    1. 相对于父布局:

      Layout_alignParentLeft layout_alignParentRight 还有 top bottom missing layout_centerInparent

    2)相对于控件

    Layout_above below toleftof torightof 等等

     

    还有一种是相对于控件进行定位的属性: layout_alignLeft 等。

  5. tablelayout

    无法为此布局中的控件指定宽度,我们可以对每行进行合并单元格,属性layout_span

    <tableRow > 表示一行。 每一个控件表示一列。

    还有一个重要属性是用来适配的,android:stretchColumns=1 表示对第二列进行拉伸。0表示对第一列进行拉伸。

  6. 自定义控件

    如图:

    建立title_layout,然后我们可以将此控件放入到其他的控件中去。如下面所示:

    只需要加入代码: <include layout="@layout/title_layout"/>

    当然,系统自带的标题栏我们需要隐藏掉。As中自动隐藏。Eclipse当中,需要加入属性: requestWindowFeature(Window.FEATURE_NO_TITLE);

     

     

    当然我们也可以通过另一种方式加入自定义控件:

    通过LayoutInflate的from()方法构建LayoutInflater对象,然后调用inflate加载一个布局文件,参数一加载我们要添加的布局文件,第二个从那时给加载好的布局文件添加一个父布局。

    这里我们传入this。表示指定为TitleLayout。

    和上面的运行结果一样。

当然,我们也可以为自定义控件加入按键处理等方法,这比include那种方式更灵活,实际开发中,这种方法用的比较多。

 

  1. listview的使用
    1. 编写实体类

    2. 编写list子项布局菜单

    3. 编写listview的适配器

      下面有一部分是优化代码:

    4. 为listview添加适配器

       

      注意:上面的步骤中,有些资源需要自己添加,比如本例中,添加的资源有一些图片如下:

  2. 布局与文字大小的指定

    Android规定 160dpi (屏幕的密度) 在此 1dp = 1px . px表示像素。dp还可以写成dpi,表示密度与像素无关。 sp 与dp类似。

    记住:dp一般指定控件与布局的大小。sp指定文字的大小。

  3. 制作Nine-Patch图片

    这是一款神器,可以指定.png图片哪些部分可以被拉伸,哪些不可以被拉伸。此应用程序在sdk---tool ----draw9patch.bat 中。

文件命名为message_left.9.png,但我们在xml指定的时候,就是message_left,后面是他的扩展名。

  1. 案例:制作聊天窗口

    步骤: main_layout/msg_layout、实体类、适配器类、挂载适配器

    详细步骤见程序。

     

posted on 2015-04-30 19:49  zhuxuekui3  阅读(727)  评论(0编辑  收藏  举报