Android基础02-常用布局及基本UI控件

一、Android学习API指南:

1. 应用的组成部分   App Components

1.1. 应用的基本原理    App Fundamentals

1.2. Activity      Activities

1.2.1. 片段    Fragments

1.2.2. 加载器     Loaders

1.2.3. 任务和返回堆    Tasks and Back Stack

1.3. Service服务   Services

1.3.1. 绑定服务     Bound Services

1.3.2. AIDL   Android Interface Definition Language

1.4. 内容提供器    Content Providers

1.4.1. 内容提供器基础   Content Providers Basics

1.4.2. 创建一个内容提供器     Creating a Content Provider

1.4.3. 日历提供器    Calendar Provider

1.4.4. 通信录提供器   Contact Provider

1.5. 意图和意图过滤器    Intents and Intents Filters

1.6. 进程和线程    Process and Threads

1.7. 权限系统    Permissions

1.8. 窗口小部件    App Widgets

1.9. Android清单    Android Manifest

2. 用户界面     User Interface

2.1. 概述    Overview

2.2. 布局    Layout

2.2.1. 线形布局    Linear Layout

2.2.2. 相对布局    Relative Layout

2.2.3. 列表视图    ListView

2.2.4. 网格视图    GridView

2.3. 输入控件   Input Controls

2.3.1. 按钮    Buttons

2.3.2. 文本区域    Text Fields

2.3.3. 复选框    Checkboxes

2.3.4. 单选按钮   Radio Buttons

2.3.5. 开关按钮   Toggle Buttons

2.3.6. 下拉列表   Spinners

2.3.7. 选择器    Pickers

2.4. 输入事件   Input Events

2.5. 菜单   Menus

2.6. 动作条   Action Bar

2.7. 设置     Settings

2.8. 对话框   Dialogs

2.9. 状态通知    Notifications

2.10. Toast通知   Toasts

2.11. 搜索   Search

2.11.1. 创建一个搜索界面    Creating a Search Interface

2.11.2. 增加当前搜索提醒  Adding Recent Query Suggestions

2.11.3. 增加个性化提醒   Adding Custom Suggestions

2.11.4. 搜索配置   Searchable Configuration

2.12. 拖放操作    Drag and Drop

2.13. 可访问性    Accessibility

2.13.1. 应用程序的可访问性   Making Applications Accessible

2.13.2. 构建可访问性服务   Building Accessibility Services

2.14. 风格和主题   Styles and Themes

2.15. 自定义控件   Custom Components

3. 应用程序资源   App Resources

3.1. 概述   Overview

3.2. 提供的资源   Providing Resources

3.3. 对资源的访问   Accessing Resources

3.4. 运行时变化的处理   Handling Runtime Changes

3.5. 本地化   Localization

3.6. 资源类型   Resource Types

3.6.1. 动画   Animation

3.6.2. 状态颜色列表    Color State List

3.6.3. 图形处理类资源   Drawable

3.6.4. 布局   Layout

3.6.5. 菜单   Menu

3.6.6. 字符串   String

3.6.7. 样式    Style

3.6.8. 其他类型   More Types

4. 动画和图形    Animation  and Graphics

4.1. 概述   Overview

4.2. 属性动画   Property Animation

4.3. 补间动画   View Animation

4.4. 帧动画    Drawable Animation

4.5. 画布和绘制   Canvas and Drawables

4.6. OpenGL    OpenGL  ES

4.7. 硬件加速   Hardware Acceleration

5. 高性能计算   Computation

5.1. RenderScript编程   RenderScript

5.2. RenderScript编程进阶    Advanced RenderScript

5.3. 运行时API说明    Runtime API Reference

6. 多媒体和照相机     Media and Camera

6.1. 媒体播放    Media Playback

6.2. 支持的媒体格式    Supported Media Formats

6.3. 音频捕获    Audio Capture

6.4. JET引擎    JetPlayer

6.5. 照相机      Camera

7. 定位和传感器    Location and Sensors

7.1. 定位和地图    Location and Maps

7.2. 定位策略    Location Strategies

7.3. 传感器概述    Sensors Overview

7.4. 手势传感器    Motion Sensors

7.5. 位置传感器    Position Sensors

7.6. 环境传感器    Environment Sensors

8. 通信   Connectivity

8.1. 蓝牙   Bluetooth

8.2. NFC通信   NFC

8.2.1. NFC基础   NFC Basics

8.2.2. NFC进阶   Advanced NFC

8.3. Wi-FI直连  Wi-Fi 2P

8.4. USB通信  USB

8.4.1. 附件模式 Accessory

8.4.2. 主机模式  Host

8.5. SIP协议   SIP

9. 文本输入法   Text and Input

9.1. 复制和粘贴    Copy and Input

9.2. 创建一个输入法    Creating an IME

9.3. 拼写检查器    Spelling Checker

10. 数据存储   Data Storage

10.1. 存储选项   Storage Options

10.2. 数据备份   Data Backup

10.3. 应用程序安装位置   App install Locaiton

11. 系统管理员   Administration

11.1. 硬件管理   Device  Policies

12. web应用   Web Apps

12.1. 概述    Overview

12.2. web应用的屏幕适配   Targeting Screens from Web Apps

12.3. 利用webview构建web应用   Building Web Apps in WebView

12.4. 调试web应用   Debugging Web Apps

12.5. web应用的优化   Best Practices for Web Apps

13. 更好的策略

13.1. 一致性(兼容性)  Compatibility

13.2. 支持多屏幕   Supporting Multiple Screens

13.2.1. 适配指定屏幕    Distributing to Specific Screens

13.2.2. 屏幕兼容模式    Screen Compatibility Mode

13.3. 支持平板和手机   Supporting Tablets and Handsets

14. Google提供的服务  Google Services

14.1. 应用程序内部付费机制

14.2. 应用程序内部付费机制概述

14.3. 如何使用应用程序付费服务

14.4. 订阅机制

14.5. 安全与设计

14.6. 测试应用程序付费服务

14.7. 应用程序付费机制的管理

14.8. 应用程序付费的相关API

14.9. 应用程序许可机制

14.10. 许可机制概述

14.11. 设置许可机制

14.12. 在应用中增加许可

14.13. 许可机制API

14.14. Google软件商店服务

14.15. 在Google Play中加过滤器

14.16. 多APK支持

14.17. 对APK附加文件的服务

14.18. Google云消息服务

14.19. 如何使用google云服务

14.20. 架构概述

14.21. 演示教程

14.22. Google云服务进阶

14.23. 信息迁移


二、布局的介绍:

1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。

2、在2.2操作系统中将AbsoluteLayout过期。而目前TableLayout也逐渐少用。

3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)

总之,Android中一共有六种布局。目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。


三、View类的常用xml属性:

(一)、类结构:

java.lang.Object

   ↳  android.view.View

(二)、View及其子元素常用属性:(各种布局及控件的共同属性)

android:id

android:background

android:onClick     为该控件的单击事件绑定监听器

android:padding    设置控件四周的填充区域

android:visibility    设置该控件是否可见(invisible/visible/gone)

android:alpha        设置该组件透明度(0-1之间的数值)

android:layout_height      子组件的布局高度

android:layout_width        子组件的布局宽度

android:layout_margin     设置子组件的外边距


四、LinearLayout:

(一)、概念:线性布局控制其中的控件或组件横向或纵向排列。在线性布局布局中,每一行或每一列只能放单独一个控件。线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。

线性布局的默认方向是水平方向(Horizontal),还有一个选项是vertical。

(二)、LinearLayout的常用属性:

1.android:orientation     定义布局内控件或组件的排列方式

可选项:vertical 、 horizontal

2.android:layout_width    定义控件的宽度

可选项:fill_parent / match_parent/ wrap_content/绝对数值

备注:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。

3.android:layout_height    定义控件的高度

可选项:fill_parent / match_parent/ wrap_content/绝对数值

备注:fill_parent / match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。

4.android:id   设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。

设置id的格式为:android:id = "@+id/id的名字"

5.android:background     设置控件的背景颜色或背景图片

例如:android:background="#ffffff"

            android:background="@drawable/图片名称"

【备注:】

颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。

#FFFFFF 代表白色

#000000  黑色

#FFFFFFFF   完全不透明

#00FFFFFF   完全透明

#88FFFFFF   半透明

6.android:layout_weight    设置控件的权重。即各控件在水平或者垂直方向上平均分配。

备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。

7.android:gravity   该属性用来控制该View的内容物的位置。

如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。

如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。

可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。

【备注:】本属性与android:layout_gravity不同。

8.android:layout_gravity   该属性用于设置控件相对于容器的对齐方式。

可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center、fill等等。

这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。

【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。

(三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的特有属性】

1、android:orientation    布局管理器内组件的排列方式

2、android:gravity    设置布局管理器内组件的对齐方式

3、android:weightSum

(四)、 LinearLayout 子元素的特有属性:

1、android:layout_weight    子元素在 LinearLayout 中所占的权重

2、android:layout_gravity     子元素在 LinearLayout 中的对齐方式


五、RelativeLayout:

(一)、概念:指按着控件之间的相对位置来进行布局。

(二)、RelativeLayout特有属性:

1、android:gravity    设置布局容器内子控件的对齐方式

2、android:ignoreGravity    设置布局管理器内哪个控件不受gravity属性的影响

(三)、RelativeLayout子元素的特有属性:LayoutParams

 A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。

layout_toRightOf      该控件在哪个控件的右侧

layout_toLeftOf        该控件在哪个控件的左侧

layout_above           该控件在哪个控件的上侧

layout_below            该控件在哪个控件的下侧

B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。

layout_alignRight      该控件与哪个控件的右对齐

layout_alignLeft        该控件与哪个控件的左对齐

layout_alignTop        该控件与哪个控件的顶对齐

layout_alignBottom   该控件与哪个控件的底对齐

C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。

layout_alignParentRight               该控件与父布局控件的右对齐吗?

layout_alignParentLeft                 该控件与父布局控件的左对齐吗?

layout_alignParentTop                 该控件与父布局控件的顶端对齐吗?

layout_alignParentBottom            该控件与父布局控件的底部对齐吗?

layout_centerInParent                  该控件位于父布局控件的中心位置吗?

layout_centerVertical                    该控件位于父布局控件的垂直中心位置吗?

layout_centerHorizontal                该控件位于父布局控件的水平中心位置吗?


六、GridLayout:网格布局

(一)、GridLayout布局属性:

1、android:alignmentMode

属性说明:设置布局的对齐模式。可以取以下值:

alignBounds -- 对齐子视图边界。

alignMargins -- 对齐子视图边距。

2、android:columnCount

属性说明:GridLayout的最大列数

3、android:rowCount

属性说明:GridLayout的最大行数

4、android:orientation

属性说明:GridLayout中子元素的布局方向。有以下取值:

horizontal -- 水平布局。

vertical -- 竖直布局。

5、android:columnOrderPreserved

属性说明: 设置该网格布局是否保留列序号。默认是true。

6、android:rowOrderPreserved

属性说明: 设置该网格布局是否保留行序号。默认是true。

7、android:useDefaultMargins

属性说明: 设置GridLayout使用默认的边距。默认值是false。

(二)、GridLayout子元素的属性:

1、android:layout_column

属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。

2、android:layout_row

属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。

3、android:layout_columnSpan

属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。

4、android:layout_rowSpan

属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。

5、android:layout_gravity

属性说明:该控件的布局方式。选项值:

top                      -- 控件置于容器顶部,不改变控件的大小。

bottom                -- 控件置于容器底部,不改变控件的大小。

left                     -- 控件置于容器左边,不改变控件的大小。

right                   -- 控件置于容器右边,不改变控件的大小。

center_vertical     -- 控件置于容器竖直方向中间,不改变控件的大小。

fill_vertical          -- 如果需要,则往竖直方向延伸该控件。

center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。

fill_horizontal      -- 如果需要,则往水平方向延伸该控件。

center                -- 控件置于容器中间,不改变控件的大小。

fill                     -- 如果需要,则往水平、竖直方向延伸该控件。

clip_vertical        -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。

clip_horizontal     -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是  right的,则剪切该控件的左边。

start                  -- 控件置于容器的起始处,不改变控件的大小。

end                   -- 控件置于容器的结束处,不改变控件的大小。


七、Android UI控件及UI组件:

(一)、控件名称:【标红色的为常用的】

TextView        文本视图

EditText         文本编辑框

Button            按钮

ImageView、Gallery   图像视图、画廊(建议过期)

ImageButton    图片按钮

ToggleButton 、Switch    开关按钮、开关

RadioButton    单选按钮

CheckBox       多选框

Spinner           下拉列表

AutoCompleteTextView   自动完成文本框

ProgressBar    进度条

SeekBar          拖动条

RatingBar        星级评分条

TimePicker、DatePicker   时间选择器、日期选择器

AnalogClock、DigitalClock    模拟时钟、数字时钟

Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框

ListView、GridView        列表视图【最重要的UI组件】、 网格视图

ScrollView      滚动视图

ExpandableListView   可展开列表视图

WebView        网页视图

SearchView    搜索框

TabHost         书签选项卡

Notification 、Toast         通知 、 吐司(短时提醒)

Menu(OptionMenu /SubMenu、ContextMenu)    菜单(选项菜单、上下文菜单)

ImageSwitcher、TextSwitcher   、   ViewPager 图像切换器、文本切换器

ActionBar        动作导航条


八、基本控件:——TextView:

(一)、TextView类结构:

java.lang.Object

   ↳ android.view.View

    ↳ android.widget.TextView

(二)、TextView 常用属性:

1、andorid:text   设置文本的内容

2、 android:textColor     设置文本的颜色

3、 android:textSize       设置文本的字体大小(sp)

4、andorid:height          设置文本的高度,以像素为单位

5、 android:width            设置文本的宽度,以像素为单位

6、 android:inputType     设置文本的类型。例如是普通文本,还是email,password,数字等等。

7、 android:singleLine     设置文本是否是单行显示。

8、android:gravity     设置文本框内文本的对齐方式。可选项有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom

9、android:drawableLeft    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

10、android:drawableRight    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

11、android:drawableTop    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

12、android:drawableBottom   用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

13、android:autoLink   给指定的文本增加可单击的超链接。可选项为:none、web、email、phone、map和all。

        多个选项之间使用“|”分隔,也可以使用all。

14、android:hint    设置当文本框内文本内容为空时,默认显示的提示性文字。

【补充:】

1、android:textAllCaps="true"     设置所有字母都大小

2、android:ellipsize="end"           文字过长,设置省略号。可选项:start , end ,middle,marquee

android:ellipsize="start" 省略号在开头

android:ellipsize="middle" 省略号在中间

android:ellipsize="end" 省略号在结尾

android:ellipsize="marquee" 跑马灯显示

【备注:】要实现跑马灯效果。要同时具有以下属性。

android:ellipsize="marquee"

android:singleLine="true"

android:focusable="true"

android:focusableInTouchMode="true"

android:marqueeRepeatLimit="marquee_forever"


九、基本控件:——EditText:

(一)、 EditText 类结构:

java.lang.Object

   ↳ android.view.View

    ↳ android.widget.TextView

      ↳ android.widget.EditText

 所以 EditText 继承了TextView的所有属性。

(二)、android:inputType的可选项:

android:inputType="textPersonName"

android:inputType="textPassword"

android:inputType="numberPassword"      只可以输入数字

android:inputType="textEmailAddress"

android:inputType="phone"      只允许输入数字,括号等特殊符号,不可以输入字母。

android:inputType="textPostalAddress"

android:inputType="time"

android:inputType="date"

android:inputType="number"


十、基本控件:——Button:

(一)、Button类结构:

java.lang.Object

   ↳ android.view.View

     ↳ android.widget.TextView

       ↳ android.widget.Button

 所以Button继承了TextView的所有属性。

【特别补充:】sp、dp、dip、dpi 、 pt、px等单位的区别?【重点】

dpi    dpi指像素密度。dots per inch  ,即每英寸内像素点的个数。它不是表示长度的单位。

在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义。

dip    dimension independent pixels  ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。

dp     与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。

px = dp * (dpi / 160)

3.7寸屏幕,分辨率320*480手机上,正好1px = 1dp。

sp      scale  independent  pixel  ,即与缩放比例无关的像素。在android中常用来表示文字大小。

px      表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。

pt      point磅。1磅=1/74英寸

xlarge 屏幕至少:960dp x 720dp

large 屏幕至少 :640dp x 480dp

normal 屏幕至少 :480dp x 320dp

small 屏幕至少 :426dp x 320dp

总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269