素材巴巴 > 程序开发 >

Android笔记——UI开发

程序开发 2023-09-03 15:34:24

概述:

  布局(Layout)的概念是针对Activity的,Activity就是布满整个Android设备的窗体或者悬浮于其它窗体上的交互界面。在一个应用程序中通常由多个Activity构成。每一个须要显示的Activity都须要在AndroidManifest.xml文件之中声明。

  通常情况下,能够使用两种方式来创建UI组件,一种方式是使用XML方式来配置UI组件的相关属性。然后装载这些UI组件,这也是最经常使用的方式。可是有些特殊情况下,须要动态生成UI组件。则须要使用另外一种方式,全然使用Java代码来创建UI组件。

  XML布局文件是Android系统中定义的Layout的经常使用方式,全部布局文件必须包括在res/layout文件夹中。且必须符合Java的命名规范。

当在res/layout文件夹下新增了布局文件之后。R.java文件会自己主动收录该布局资源,Java代码可通过setContentView方法在Activity中显示该Layout。

  setContentView(R.layout.<资源名称>)。

在布局文件里能够指定UI组件的android:id属性,该属性的属性值代表该组件的唯一标识。通过Activity.findViewById()訪问,而且findViewById()必须在setContentView载入xml文件之后使用,否则会抛出异常。

  

  findViewById(R.id.)

  Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中。Android应用的全部UI组件都继承了View类。

View类另一个重要的子类:ViewGroup,ViewGroup类是全部布局管理器的父类。

  ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。

  ViewGroup.LayoutParams提供两个XML属性设定组件的大小。

这两个属性有三个基本值。这两个属性有三个特定的值:

ViewGroup.MarginLayoutParams用于控制子组件周围的页边距。


  对于View的尺寸。android提供了三种单位供选择使用:

  尺寸单位选择的技巧:假设设置长度、高度等属性时能够使用dp或sp。可是假设设置字体,须要使用px。假设使用dp或sp,系统会依据屏幕密度的变化进行转换。

  为了适应各种界面风格,Android提供了六种布局规范。利用这六种布局,基本上能够在设备上随心所欲的摆放不论什么UI组件,这六种布局各自是:


布局类型:

相对布局(RelativeLayout):

RelativeLayout。其内子组件的位置总是相对兄弟UI组件、父亲容器来决定的。

比方UI组件A相对于UI组件B的位置进行定位,那么UI组件B须要在UI组件A之前定义。



 相对布局用到的主要属性:

这个比較好玩,在元素的位置的时候,使用相对位置,能够相对其它元素,也能够相对这个布局,就像我说:我如今站在pawa和 tempest的中间;或者说,我站在队伍的中间。前者就是相对其它元素来定义位置,后者是相对整个布局来定义位置。


 


线性布局(LinearLayout):

LinearLayout是最经常使用的布局方式,它会将容器里的UI组件一个一个挨着排列起来。

可是LinearLayout不会换行。当UI组件超出屏幕之后。则不会被显示出来。

LinearLayout有两个重要的XML属性:

androidgravity(对齐方式)

android:orientation(排列方式)


  android:orientation(排列方式),设定了LinearLayout中包括的UI组件的排列方式。有两个选项vertical(竖向)、horizontal(横向,默认值)

  android:gravity(对齐方式),设定LinearLayout中包括UI组件的对齐方式。其选项非常多,经常使用上(top)、下(bottom)、左(left)、右(right)。

这样的布局比較经常使用,也比較简单,就是每一个元素占一行,当然也可能声明为横向排放,也就是每一个元素占一列。


 
 

表格布局(TableLayout):

表格布局,採用行、列的形式来管理UI组件,TableLayout通过TableRow、其它UI组件来控制表格的行数和列数。



  每次向TableLayout中加入一个TableRow。该TableRow就是一个表格行,TableRow也是容器,因此它也能够不断加入其它组件,没加入一个子组件。该表格就添加一列。假设直接向TableLayout中加入组件。那么这个组件将直接占用一行。



  TableLayout支持的XML属性

  注意:TableLayout中所谓的序列号是从0開始计算的。


xml version="1.0" encoding="utf-8"?

>


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。