Android UI – 控件和布局

  刚开始学习Android,参考了《精通Android2》。其中涉及的知识在看的时候都能理解,甚至觉得挺简单的,当过了一段时间就会忘记,所以还是以写随笔的方式学习。一方面加深自己对知识点的理解,另一方面,可以通过查阅随笔快速的恢复记忆。

         我学习一门技术的时候喜欢从前往后的启发式学习方式,先了解结果,再去问为什么。所以Android的学习的第一篇随笔就是Android UI。本篇是以清单的形式罗列Android 中的UI控件,主要是帮助恢复记忆,以防出现提笔忘字的情况发生。

UI控件

文本控件

         Android中的文本控件有TextView、EditText、AutoCompleteTextView、MultiAutoCompleteTextView控件。

TextView

         TextView文本用于显示文本,但不允许进行编辑。

EditText

         EditText控件是TextView的子类。支持文本编辑。

AutoCompleteTextView

         AutoCompleteTextView控件是一个具有自动完成功能的TextView。换句话说,当用户在TextView中键入内容时,该控件可以显示建议输入供用户选择。

MultiAutoCompleteTextView

         AutoCompleteTextView仅为文本视图的完整文本提供建议,如果键入一个句子,不会获得每个单词的建议。MultiAutoCompleteTextView可以在用户键入时提供建议,由用户定义触发建议的分隔符。

按钮控件

         3种常用按钮:基本按钮、图像按钮和切换按钮。

Button

Android中基本的按钮类是android.widget.Button.主要用来处理单击事件。

ImageButton

         Android通过android.widget.ImageButton提供图像按钮。图像按钮的用法类似于基本按钮。

ToggleButton

         与复选框或单选按钮一样,ToggleButton是一种具有两种状态的按钮。此按钮既可以出于On(打开)状态,也可以出于Off(关闭)状态。

选择控件

CheckBox

         可以通过创建android.widget.checkBox实例来创建复选框。

RadioButton

         创建一组单选按钮,首先创建RadioGroup,然后向组中填充单选按钮。使用android.widget.RadioGroup实现单选组,使用android.widget.RadioButton实现单选按钮。

列表控件

Android SDK提供了多种列表控件,介绍下ListView

ListView

         ListView以垂直方式显示一组项。使用ListView的常见方式是编写一个新活动扩展android.app.ListActivity。ListActivity包含一个ListView,可以调用setListAdapter()方法来设置ListView的数据。布局XML文件分解为了两个文件。第一个文件包含活动的用户界面定义。第二个文件包含列表中的项目定义。

网格控件

Android包含GridView控件,它可以以网格的形式显示数据。

GridView

         GridView控件在网格上显示信息。GridView的使用模式是,在XML布局中定义网格,然后使用android.widget.ListAdapter将数据绑定到该网格。

日期和时间控件

DataPicker和TimePicker

         分别用于选择日期、选择时间

AnalogClock和DigitalClock

         分别显示时钟、数字时钟

其他控件

MapView

         com.google.android.maps.MapView控件可以显示地图。既可以通过XML布局也可以通过代码示例化此控件,但使用它的活动必须扩展MapActivity。MapActivity处理加载地图的多线程请求,执行缓存等。

Gallery

         Gallery控件是一种可水平滚动的列表控件,焦点始终位于列表中央。类似于列表控件,首先获得Gallery的引用,然后调用setAdapter()方法来填充数据,最后注册选择事件。

Spinner控件

Spinner

         Spinner控件就像一个下拉菜单。既可以通过XML布局也可以通过代码实例化Spinner。用法类似于列表控件。首先获得对Spinner的引用,然后调用setAdapter()方法来填充数据,最后注册选择事件。

UI布局

LinearLayout

         该布局管理器根据orientation属性的值,以水平或垂直方式组织其子控件

TableLayout

         TableLayout布局管理器是LinearLayout的扩展。以行和列的形式组织其子控件。

RelativeLayout

         RelativeLayout布局管理器让容器中的控件以相对容器或容器中的另一个控件的形式放置。

FrameLayout

         显示单一项,主要用于动态显示单一视图,但可以向其中填充许多项,将一个置为可见,将其余项置为不可见。

适配器

         适配器使将数据绑定到控件变得更加简单和灵活。Android中的适配器供扩展android.widger.AdapterView的部件使用。扩展AdapterView的类包括ListView、GridView、Spinner和Gallery。适配器的用途是为容器提供子视图。它利用视图的数据和元数据构建每个子视图。

附:

为各种屏幕配置下显示的应用程序构建UI。如,横向和纵向模式下显示。

         Android采用的方法是:根据设备的配置在特定文件夹中查找并加载布局。设备可以使用3种配置中的一种:横向、纵向或正方形。要为不同的配置提供不同的布局,必须为每种布局创建具体的文件夹,Android将从该文件夹加载到合适的配置。默认的布局文件位于res/layout。要支持纵向显示可以创建res/layout-port文件夹,要支持横向显示,可以创建res/layout-land文件夹。正方形显示,可以创建res/layout-square。

         注意,Android SDK未提供任何API来支持以编程方式指定要加载何种布局,系统只会根据设备的配置来选择文件夹。但是可以在代码中设置设备的方向。

Android支持的尺寸类型

         像素:缩写为px。这种尺寸表示屏幕上的物理像素。

         英寸:缩写为in

         毫米:缩写为mm

         磅:缩写为pt。1pt等于1in的1/72。

         密度独立像素:缩写为dip或dp。此尺寸类型使用160dp屏幕作为参考框架,然后将该屏幕映射到实际屏幕。例如,宽度为160像素的屏幕将1dip映射到1像素。

         比例独立像素:缩写为sp。通常用于显示字体类型。这种尺寸类型将使用用户的参数设置和字体大小来确定实际大小。

使用Hierarchy View调试和优化布局

         Hierarchy View以树的形式显示视图层次结构。它的思路是:将布局加载到攻击中,然后检查布局来(1)确定可能的布局问题(2)尝试优化布局,从而最小化视图数量(优化性能)。

原文地址:https://www.cnblogs.com/jackiecoder/p/2379818.html