Android中级控件介绍(五)
一、相对布局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中级控件介绍(五)相关推荐
- 《移动项目实践》实验报告——Android中级控件
实验目的 1.熟悉App开发常用的一些中级控件及相关工具,主要包括各种布局用法.特殊按钮的用法.下拉框与基本适配器的用法.编辑框的用法等: 2.掌握Activity的基本概念与常见用法: 实验内容 2 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件
第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...
- Android 高级控件(七)——RecyclerView的方方面面
Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...
Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...
- 移动开发技术(Android)——实验5 Android高级控件的应用
移动开发技术--实验5 Android高级控件的应用 一.实验目的 二.实验内容 1.Spinner.ListView控件与Adapter适配器(一) 2.Spinner.ListView控件与Ada ...
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...
- 《移动项目实践》实验报告——Android高级控件
实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...
- Android高级控件----AdapterView与Adapter详解
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...
最新文章
- 入职一周了,发现自己来了假阿里?
- 如何从grep -R中排除目录?
- Linux基础笔记_01
- 21丨容器化守护进程的意义:DaemonSet
- Spring boot应用如何支持https
- jquery ztree 设置勾选_047 JAVA-jQuery
- netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...
- Python学习 - 之super函数
- 对listView的理解
- 一周学会Mootools 1.4中文教程:(4)类型
- 5.10 Memory Networks 记忆网络的应用与方法
- 导入 ArcMap 文档
- nacos2.0 +nginx集群
- docker安装speedtest和宝塔面板
- Git团队协作工作流程
- android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
- Parallels Desktop 16 网络初始化失败
- 深入浅出keepalived+nginx实现网关主备高可用
- Java实现图书管理小练习(赌包辣条看完绝对会~)
- Python 利用pandas 获取Excel重复记录