android UI入门

来源:互联网 发布:知言养气的意思是什么 编辑:程序博客网 时间:2024/06/05 18:40

android UI入门 

    android应用程序的用户界面由分层的View object组成。每一个view代表界面上的一个区域。例如,一个按钮代表一个可以被用户点击的一个矩形区域。android应用把views放置在layout容器中,即ViewGroups。

view通用属性

    所有的系统属性使用anroid:作为前缀。 
     Android使用特殊的尺寸单位,叫做dip(density-independent pixels)或者dp。这个是android处理不同屏幕大小和密度大小的一个方法。在定义UI元素大小的时候,应该使用dp。 

height和width

     每一个android中的view必须有height和width,通过layout_height和layout_width属性来定义。height和width的值可以设置为一个精确的大小或者特殊的象征性的值,wrap_content或者match_parent(Adnroid API version 8把之前的fill_parent修改为match_parent,但是fill_parent依然允许)。
  
     对于wrap_content,View的大小取决于它包含内容的大小。而match_parent回让View扩充到整个Parent view。相对有指定精确的大小,使用wrap_content或者match_parent更为灵活。 

 margins和padding

      Android使用两个属性在view周围产生空白:layout_margin和padding。margins在view的外部创造空白,把view和其他周围的view分开。padding在view内部(即view内容和view边界之间)产生空白区域。 

  Gravity

            默认情况下,andrid会将view放在屏幕的左边。为了改变这种情况,你需要试用gravity属性。gravity控制view的子控件在view中的默认位置。   

     与gravity相似的是layout_gravity属性。gravity定义了view中子控件的位置,layout_gravity则定义了子控件相对于父控件的位置。

 

 LAYOUT

      Android分层的view通过layout容器开始。   

FrameLayout

     FrameLayout是最简单的容器。这个容器根本不排列子view。它只是简单的列出各个控件。当你要创建重叠的view时,可以使用它。    

tablelayout

      Tablelayout把数据显示为一个表格的形式。它把子view按照行和列排列,每一行包含一个TableRow容器。
和大多数view的子控件不同,TableLayout的子控件不能定义layout_width。每个单元格可以标记为跨越几行、扩充或者收缩去适应相应的控件。 

LinearLayout

      正如名字所提示的,这个容器将子view按照一个方向排列,横向或者纵向(通过orientation属性定义)。通过layout_weight属性可以定义子view占用多大的空间。它定义了一个view相对于其他views的权重。
     默认情况下,layout_weight的值为0,这意味着它所占有的空间为它所包含的内容的大小。layout_weight设置为大于0会使得view填满容器中剩余的控件。
     例如,一个layout中有三个按钮,他们的layout_weight属性分别为0,1,4。那第一个按钮占有的空间为显示它内容所需要的控件。而剩下的两个按钮填满剩下的区域。剩下的区域分为1+4=5份,第二个按钮占去剩下区域的1/5,第三个按钮占去4/5。使用weight使得你可以按照比例来排列views,很大程度提高了布局的灵活性。
     关于使用layout_weight的一个困扰是layout_weight和layout_height和layout_width的关系。Weight通常情况下会覆盖height和width,但并不总是这样。如果打算使用layout_weight,把对应的height和width设置为0dp。这样,view的大小就会由weigth决定。 

RelativeLayout

     RelativeLayout比LinearLayout更灵活。正如它名字所提示的,它通过定义子view的相对于其他子view的相对位置来排列子view。常用到的属性有下列几种:
     1、相对于parent,layout_alignParentTop,layout_alignParentBottom,
                      layout_alignParentRight,layout_alignParentLeft
                      layout_centerHorizontal,layout_centerVertical,layout_centerInParent
        这些属性的值可以为ture或者false。
     2、相对于子view:layout_alignTop,layout_alignBottom,
                      layout_alignRight,layout_alignLeft
                            layout_alignBaseline
                      layou_above,layout_below,layout_leftof,layout_rightOf
         这些属性的值为其他view的id。 

GridLayout

     在android4中,提供了一个新的layout容器,叫做gridLayout。它使得创建"仪表盘"风格的界面变得容易。
 
原创粉丝点击