一、相对布局RelativeLayout

RelativeLayout的下级视图的位置是相对位置,得有具体的参照物才能确定最终位置。

如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角。

用于确定视图位置的参照物分两种,一种是与该视图自身平级的视图,另一种是该视图的上级视图(也就是RelativeLayout)。

与参照物对比,相对位置在布局中的属性值与代码中的类型值

相对布局的演示效果

二、框架布局FrameLayout

FrameLayout也是较常用的布局,其下级视图无法指定所处的位置,只能统统从上级FrameLayout的左上角开始添加,并且        后面添加的子视图会把之前的子视图覆盖掉。

框架布局一般用于需要重叠显示的场合,比如绘图、游戏界面等,常见属性说明如下。

foreground:指定框架布局的前景图像。该图像在框架内部永远处于最顶层,不会被框架内的其他视图覆盖。

foregroundGravity:指定前景图像的对齐方式。该属性的取值说明同gravity。

框架布局的演示效果

三、复选框CheckBox

CompoundButton类是抽象的复合按钮,因为是抽象类,所以不能直接使用。实际开发中用的是CompoundButton类的几个派生类,主要有复选框CheckBox、单选按钮RadioButton以及开关按钮Switch。

CompoundButton在代码中可使用下列4种方法进行设置。

setChecked:设置按钮的勾选状态。

setButtonDrawable:设置左侧勾选图标的图形。

setOnCheckedChangeListener:设置勾选状态变化的监听器。

isChecked:判断按钮是否勾选。

例:

复选框

更换复选框左侧的勾选图像

可将布局文件中的button属性修改为自定义的勾选图形。下面是一个勾选图形状态定义的例子,如果是勾选状态,就显示图形check_choose;如果取消勾选,就显示图形check_unchoose。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:drawable="@drawable/check_choose"/>

<item android:drawable="@drawable/check_unchoose"/> </selector>

例:更换勾选图像的示例界面

四、开关按钮Switch

Switch是一个高级版本的CheckBox,在选中与取消选中时可展现的界面元素比CheckBox丰富。

Switch允许设置开启/关闭时候的文本,也允许设置开关轨道的背景和图标。

Switch按钮的默认效果图

仿iOS的开关按钮

借助状态列表图形StateListDrawable,分别定义已选中时候的“开”图形,以及未选中时候的“关”图形。 状态列表图形的XML文件如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:drawable="@drawable/switch_on"/>

<item android:drawable="@drawable/switch_off"/> </selector>

然后把CheckBox控件的background属性设置为该状态图形。

山寨后的开关按钮演示效果

四、单选按钮RadioButton

单选按钮要在一组按钮中选择其中一项,并且不能多选,这要求有个容器确定这组按钮的范围,这个容器便是RadioGroup。

RadioGroup实质上是个布局,同一组RadioButton都要放在同一个RadioGroup节点下。

下面是RadioGroup常用的3个方法。

check:选中指定资源编号的单选按钮。

getCheckedRadioButtonId:获取选中状态单选按钮的资源编号。

setOnCheckedChangeListener:设置单选按钮勾选变化的监听器。

下面是使用单选按钮的代码例子:

更换RadioButton的图标

如果通过button属性变更图标,那么图标与文字就会挨得很近,如下面的左图所示。

为了拉开图标与文字之间的距离,得换成drawableLeft属性展示新图标(不要忘了把button改为@null),此时再设置drawablePadding即可指定间隔距离。

修改效果如下面的右图所示

自定义按钮图标的三种方式

(1)button属性:主要用于图标大小要求不高,间隔要求也不高的场合。

(2)background属性:主要用于能够以较大空间显示图标的场合。

(3)drawableLeft属性:主要用于对图标与文字之间的间隔有要求的场合。

适配视图基础:

下拉框Spinner

数组适配器ArrayAdapter

简单适配器SimpleAdapter

五、下拉框Spinner

Spinner是下拉框,用于从一串列表中选择某项,功能类似于单选按钮的组合。

Spinner在代码中可调用下列4个方法。

setPrompt:设置标题文字。

setAdapter:设置下拉列表的适配器。适配器可选择ArrayAdapter或SimpleAdapter。

setSelection:设置当前选中哪项。注意该方法要在setAdapter方法后调用。

setOnItemSelectedListener:设置下拉列表的选择监听器,该监听器要实现接口OnItemSelectedListener。

下拉框的两种展现形式

一种是在当前下拉框的正下方展示列表,此时把spinnerMode设置为dropdown,如下面上图所示;

另一种是在页面中部以对话框形式展示列表,此时把spinnerMode设置为dialog,如下面下图所示。

六、数组适配器ArrayAdapter

适配器好比一组数据的加工流水线,你丢给它一大把糖果,适配器把糖果排列好顺序,然后拿来制作好的包装盒,把糖果往里面一塞,出来的便是一个个精美的糖果盒。

最简单的适配流水线就是之前演示Spinner用到的ArrayAdapter。

ArrayAdapter主要用于每行列表只展示文本的情况,有两道工序。

(1)第一道工序是构造函数,除了提供一堆原始数据外(六大行星的名称列表),还可以指定当前文本的样式。

(2)第二道工序是定义下拉列表的文本列表样式。

如何使用使用数组适配器

使用数组适配器的代码例子如下:

// 声明一个下拉列表的数组适配器

ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this, R.layout.item_select, starArray);

// 设置数组适配器的布局样式

starAdapter.setDropDownViewResource(R.layout.item_dropdown);

// 设置下拉框的数组适配器

sp.setAdapter(starAdapter);

七、简单适配器SimpleAdapter

ArrayAdapter只能显示文本列表,而SimpleAdapter允许在列表项中展示多个控件,包括文本与图片。

下面是SimpleAdapter的使用代码例子:

// 声明一个下拉列表的简单适配器,其中指定了图标与文本两组数据

SimpleAdapter starAdapter = new SimpleAdapter(this, list,  R.layout.item_simple, new String[]{"icon", "name"},             new int[]{R.id.iv_icon, R.id.tv_name});

// 设置下拉框的简单适配器

sp.setAdapter(starAdapter);

使用简单适配器的行星列表效果

八、文本编辑框EditText

EditText是文本编辑框,用户可在此输入文本等信息。

EditText的常用属性说明如下。

inputType:指定输入的文本类型,代码中对应的方法是setInputType。输入类型的取值说明见表,若同时使用多种文本类型,则可使用竖线“|”把多种文本类型拼接起来。

maxLength:指定文本允许输入的最大长度。该属性无法通过代码设置。

hint:指定提示文本的内容,代码中对应的方法是setHint。

textColorHint:指定提示文本的颜色,代码中对应的方法是setHintTextColor。

EditText的输入类型说明

九、文本监听器TextWatcher

文本监听器接口TextWatcher用于监控输入文本的变化事件。该接口提供了3个监控方法,具体说明如下。

beforeTextChanged:在文本改变之前触发。

onTextChanged:在文本改变过程中触发。

afterTextChanged:在文本改变之后触发。 文本监听器的常用业务场景包括:

(1)在输入文本达到指定长度时自动隐藏输入法。

(2)如果监控到已输入回车符,就自动将焦点移到下一个控件,从而实现回车符自动跳转的要求。

十、自动完成编辑框AutoCompleteTextView

自动完成编辑框一般用于搜索文本框,如在电商App的搜索框输入商品文字时,下方会自动弹出提示词列表。

它的实现原理是:EditText结合监听器TextWatcher与下拉列表Spinner,一旦监控到EditText的文本发生变化,就自动弹出             适配好的文字下拉列表,选中具体的下拉项向EditText填入相应文字。

自动完成编辑框的属性和设置方法

自动完成编辑框的展示效果

十一、活动Activity基础

1.Activity的生命周期

下面是Activity与生命周期有关的方法说明。

onCreate:创建页面。把页面上的各个元素加载到内存中。

onStart:开始页面。把页面显示在屏幕上。

onResume:恢复页面。让页面在屏幕上活动起来,例如开启动画、开始任务等。

onPause:暂停页面。让页面在屏幕上的动作停下来。

onStop:停止页面。把页面从屏幕上撤下来。

onDestroy:销毁页面。把页面从内存中清除掉。

onRestart:重启页面。重新加载内存中的页面数据。

2.Activity的生命周期变化(上)

(1). 页面之间的跳转 首次打开页面ActJumpActivity,调用方法的顺序为:本页面onCreate→onStart→onResume 从       ActJumpActivity跳转到ActNextActivity,调用方法的顺序为:上一个页面onPause→下一个页面                onCreate→onStart→onResume→上一个页面onStop 从ActNextActivity回到ActJumpActivity(按返回键或在代码中调用finish方法),调用的方法顺序为:下一个页面onPause→上一个页面onRestart→onStart→onResume→下一个页面onStop→onDestroy

(2).竖屏与横屏的切换 首先进入测试页面ActRotateActivity,此时默认为竖屏显示;接着倒转手机切换到横屏,观察日志;然后倒转手机切换回竖屏,观察日志。 无论是竖屏切换到横屏,还是横屏切换到竖屏,都是原屏幕的页面从onPause到onStop再到onDestroy一路销毁,然后新屏幕的页面从onCreate到onStart再到onResume一路创建而来。

(3).按HOME键与返回App

回到桌面时,页面的生命周期从活动状态变为暂停状态。

返回App时,页面的生命周期又从暂停状态变为活动状态。

十二、使用Intent传递消息

1. Intent的中文名是意图,简单地说就是传递消息。Intent是各个组件之间信息沟通的桥梁,既能在Activity之间沟通,又能在Activity与Service之间沟通,也能在Activity与Broadcast之间沟通。

Intent用于Android各组件之间的通信,它主要有3部分工作:

(1)Intent需标明本次通信请求从哪里来、到哪里去、要怎么走。

(2)发起方携带本次通信需要的数据内容,接收方对收到的Intent数据进行解包。

(3)如果发起方要求判断接收方的处理结果,Intent就要负责让接收方传回应答的数据内容。

Intent组成元素的列表说明

2. 表达Intent路径的两种方式

一种是显式Intent,直接指定来源类与目标类名,属于精确匹配。

显式Intent的声明方式有如下3种:

(1)在构造函数中指定

(2)调用setClass方法指定

(3)调用setComponent方法指定

另一种是隐式Intent ,没有明确指定要跳转的类名,只给出一个动作让系统匹配拥有相同字串定义的目标,属于模糊匹配。

隐式Intent的动作名称通过setAction方法指定,更详细的过滤条件可通过setData方法和addCategory方法设置。

3.向下一个Activity传递参数

传递参数的两种方式包括:

(1)调用putExtra方法。Intent重载了很多种putExtra方法传递各种类型的参数,包括String、int、double等基本数据类型,甚至Parcelable、Serializable等序列化结构。

(2)调用putExtras方法。Bundle内部用于存放数据的实质结构是Map映射,可添加元素、删除元素,还可判断元素是否存在。开发者把Bundle全部打包好只需调用一次putExtras方法,把Bundle全部取出来也只需调用一次getExtras方法。

4.向上一个Activity返回参数

接收返回参数的编码步骤如下:

(1)前一个页面打包好请求数据,调用方法startActivityForResult(Intent intent, int requestCode),表示需要处理结果数据。

(2)后一个页面接收请求数据,进行相应处理。

(3)后一个页面在返回前一个页面时,打包应答数据并调用setResult方法返回信息。

(4)前一个页面重写方法onActivityResult,并对应答数据进行解包处理。

Android中级控件介绍(五)相关推荐

  1. 《移动项目实践》实验报告——Android中级控件

    实验目的 1.熟悉App开发常用的一些中级控件及相关工具,主要包括各种布局用法.特殊按钮的用法.下拉框与基本适配器的用法.编辑框的用法等: 2.掌握Activity的基本概念与常见用法: 实验内容 2 ...

  2. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件

    第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...

  3. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

  4. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  5. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  6. 移动开发技术(Android)——实验5 Android高级控件的应用

    移动开发技术--实验5 Android高级控件的应用 一.实验目的 二.实验内容 1.Spinner.ListView控件与Adapter适配器(一) 2.Spinner.ListView控件与Ada ...

  7. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  8. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  9. Android高级控件----AdapterView与Adapter详解

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

最新文章

  1. 入职一周了,发现自己来了假阿里?
  2. 如何从grep -R中排除目录?
  3. Linux基础笔记_01
  4. 21丨容器化守护进程的意义:DaemonSet
  5. Spring boot应用如何支持https
  6. jquery ztree 设置勾选_047 JAVA-jQuery
  7. netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...
  8. Python学习 - 之super函数
  9. 对listView的理解
  10. 一周学会Mootools 1.4中文教程:(4)类型
  11. 5.10 Memory Networks 记忆网络的应用与方法
  12. 导入 ArcMap 文档
  13. nacos2.0 +nginx集群
  14. docker安装speedtest和宝塔面板
  15. Git团队协作工作流程
  16. android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
  17. Parallels Desktop 16 网络初始化失败
  18. 深入浅出keepalived+nginx实现网关主备高可用
  19. Java实现图书管理小练习(赌包辣条看完绝对会~)
  20. Python 利用pandas 获取Excel重复记录

热门文章

  1. react 的样式写法
  2. 从金庸小说看古代武侠世界计划生育
  3. HR不得不知的Excel技能——模板篇
  4. 计算机图形学——MFC绘图基础
  5. zblog php getlist,zblog使用getlist方法调用置顶文章
  6. (练习篇)萤火虫esp32与小爱音响---实现笔记本电脑唤醒
  7. 筛选状态下进行复制粘贴为数值
  8. 6.26线下深度交流:数据如何驱动新零售升级?
  9. 学习也能像打王者一样发了疯、拼了命、失了智!
  10. C语言实现总体方差,总体标准差,样本方差,样本标准差