安卓入门系列-07常用UI控件(长文)
常用UI控件
- 简介
- 这一篇介绍开发中的常用UI控件。
- 布局管理器
- 所有布局管理器都是ViewGroup的子类,都可作为容器类使用。继承自View,所以也可嵌套。
- 常见的布局之前已经提到了三种,这里不再提,只需要知道,它一般作为控件的容器,利用布局管理器方便布局的开发。
- TextView及其子类
- Textview文本框
- 显示文本内容的文本区域,不可编辑。
- EditText编辑框
- 显示文本内容,可编辑修改。
- Button按钮
- 可点击的一个按钮,点击触发onclick事件,其实是TextView的点击实现。在开发中,无论装饰得多么花哨,很多控件的本质依然是Button。
- RadioButton:单选按钮,一般和RadioGroup一起使用组成选项组
- CheckBox:复选按钮
- ToggleButton:状态开关按钮
- Switch:开关
- Clock钟
- TextClock:取代DigitalClock组件,能以24/12 小时制来显示时间,数字。
- AnalogClock:继承自View组件,overwrite了View的OnDraw方法,它会在View上绘制模拟时钟。使用这个控件IDE加底线,表示不建议使用了。
- Chronometer计时器
- 倒计时。
- 代码测试
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个TextView"/><EditTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个EditText"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个Button"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个RadioButton"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个CheckBox"/><ToggleButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><Switchandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个Switch"/><TextClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><AnalogClockandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><Chronometerandroid:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
- 演示结果
- Textview文本框
- ImageView及其子类
- 继承自View,显示图片。
- ImageButton图片按钮
- 图片按钮,可触发。
- QuickContactBadge关联联系人图片
- 显示关联到特定联系人的图片。
- ZoomButton图片缩放按钮
- 代表”放大”、”缩小”两个按钮。(需要代码控制)
- 代码测试
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/><QuickContactBadgeandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/><ZoomButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/></LinearLayout>
- 演示结果
- AdapterView及子类
- 本身是一个抽象基类,继承了ViewGroup,它的本质是容器,它无法直接使用,是一种自动适配的容器。
- Listview列表视图
- 垂直显示列表内容的控件。
- Adapter适配器
- 用内容填充列表视图。
- AutoCompleteTextView自动完成文本框
- AutoCompleteTextView由Editext派生,实际上它也是一个编辑框,但它比普通编辑框多了一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供用户从中选择。
- GridView网格视图
- 类似于ListView,但是多列。
- ExpandableListView可展开的列表组件
- 列表项分组。
- 这一部分均需要适配器,后面博客提到,就不演示了。
- ProgressBar及其子类
- ProgressBar进度条
- 进度条通常用于向用户显示一个百分比。进度条可以动态地显示进度,避免用户死等的尴尬状态。用颜色填充表明进度。
- SeekBar拖动条
- 拖动条和进度条非常相似,通过滑块的位置来标识数值,允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种数值进行调节,亮度调节的底层就是它。
- RatingBar星级评分条
- 允许用户通过拖动来改变进度,不过RatingBar通过星星来表示进度。
- 代码测试
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content" /><SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content" /><RatingBarandroid:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>
- 演示结果
- ProgressBar进度条
- 对话框
- 以下对话框均需要具体代码实现逻辑,后面介绍,这里只演示效果。
- AlertDialog弹出对话框
- 功能最丰富、实际应用最广的对话框
- ProgressDialog进度条对话框
- 进度条对话框、这个对话框只是对进度条的包装
- DatePickerDialog日期选择对话框
- 日期选择对话框,这个对话框只是对DatePicker的包装
- TimePickerDialog时间选择对话框
- 时间选择对话框,这个对话框只是对TimePicker的包装。
- 代码测试
- 一般代码控制弹出,演示需要,我让它显示出来了。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><TimePickerandroid:layout_width="wrap_content"android:layout_height="wrap_content"></TimePicker><TimePickerandroid:layout_width="wrap_content"android:layout_height="wrap_content"></TimePicker></LinearLayout>
- 演示结果
- 菜单(Menu)
- Android提供了两种创建菜单的方式,一种是代码创建,一种是使用xml资源文件定义。推荐后者,即用xml文件方式,可以减少代码量。
- 一般而言,菜单资源文件放在res目录的menu目录下(没有规定,但约定俗成),其xml文件的根元素通常是<menu…/>,不需要指定任何属性。
- 资源文件内容:
- <item…/> 元素:定义菜单项
- <group…/>子元素:将多个<item…/>定义的菜单项包装成一个菜单组。
- 在文件中定义了菜单资源后,必须重写onCreateOptionsMenu(),onCreateContextMenu() 方法,在这些方法中调用MenuInflater对象的inflate方法(填充器填充)使用指定资源文件对应的菜单就可以了。
- 资源文件内容:
- 活动条( ActionBar )
- 安卓3.0出现,位于传统的标题栏的位置,也就是显示在屏幕的顶部。其上一般显示App的图标和Activity标题。除此之外,ActionBar的右边海可以显示活动项( Action Item )。
- 但是我们一般不使用这种,所以我在前面的博客都是NoActionBar。
- Toast信息提示
- 显示提示信息,如今的APP中最常见的是“再点击一次退出”。(开发是用于事件是否成功的测试)
- 代码测试
package com.zc.helloworld;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Button btn;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn);context = this;btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(context,"安卓",Toast.LENGTH_LONG).show();}});}}
- SearchView搜索框
- 可以让用户在文本框输入文字,通过监听器监控用户输入,当用户输入完成后提交搜索,也可通过监听器执行实际的搜索功能实现。
- 代码测试
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zc.helloworld.MainActivity"android:orientation="vertical"><SearchViewandroid:layout_width="match_parent"android:layout_height="wrap_content"></SearchView></LinearLayout>
- Fragment碎片
- 3.0版本引入了Fragment功能,类似于Activity,可以像Activity一样包含布局。 不妨认为Fragment是一种轻量级的Activity,引入Fragment后,一个屏幕下布局更有了定制性和扩展性。曾今麻烦的多标签实现有了更方便的用法。
- 这是一个相当常用的控件,很多实现都是基于它。
- 例如QQ的底部菜单,美团外卖的底部菜单导航。
- 补充说明
- 具体代码可以在我的Github找到,欢迎star或者fork
安卓入门系列-07常用UI控件(长文)相关推荐
- 【cocosStdio系列】之UI控件下
[cocosStdio系列]之UI控件下 大家好,我是Lampard 今天与大家通过一个demo了解cocos给我们提供的各个UI控件 reference:<cocos2 ...
- Android开发 入门篇(二) - 常用UI控件
文章目录 控件 Button TextView EditText ImageView ProgressBar AlertDialog ProgressDialog 布局 LenearLayout an ...
- IOS 常用UI控件
目录 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 具体内容 下拉刷新 EGOTableViewPullRefresh ...
- 【cocoStdio系列】之UI控件中
[cocosStdio]之UI控件(中) 大家好,我是Lampard 今天与大家通过一个demo了解cocos给我们提供的各个UI控件 reference:<cocos2 ...
- ios 设置属性的center_IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)...
3. disabled(失效状态,不可用状态) 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击,默认情况是可以点击的. 对应的枚举常量:UIControlStateDi ...
- 一些常用UI控件汇总
1.标签控件 UIlable 作用:显示文本 常用属性: (1).lineBreakMode //label宽度不够时,对文本的打断方式,默认为打断文本尾部 (2).shadowColor //设置l ...
- 常用UI控件之UIControl
1.UIControl概述 UIControl继承于UIView,其子类 有:UIButton,UITextField,UISegmentedControl(分段控件),UISlider (滑块控件) ...
- android ui新控件,android_常用UI控件_01_TextView3_点击打开新的activity
点击textview打开新的activity (1) MainActivity.javapackage com.example.android_textview_opennewactivity; im ...
- UI控件库分享:DWZ(j-UI)、LigerUI、Linb
DWZ(j-UI): 在线演示地址:http://demo.dwzjs.com 在线文档:http://demo.dwzjs.com/doc/dwz-user-guide.pdf DWZ框架Ajax开 ...
最新文章
- linux 下的lamp的简单安装
- 《Imperfect C++中文版》——第2章 对象生命期
- 【Python】学习笔记总结8(经典算法)
- 我的四轴专用PID参数整定方法及原理
- html table nei边框线,GitHub - meichuanneiku/TableCell: 在TableBank的基础上,进一步标注到单元格精度,利用目标检测/分割实现单元格定位。...
- 打印机显示发送任务到服务器失败,G-FAX单机版操作指引-AOFAX—传真服务器.DOC
- 尝试对知乎网验证码进行处理:
- 吴恩达深度学习 —— 4.7 参数 vs. 超参数
- python操作mysql中的表_带你了解什么是Python操作MySQL数据库
- 【声源定位】基于matlab不同空间谱估计的声源定位算法比较【含Matlab源码 545期】
- 0的ascii码值(0的ascii码值)
- Android 平台 Native 代码的崩溃捕获机制及实现
- 如何申请免费SSL证书?宝塔面板SSL证书安装部署完整教程
- 教大家做蛋黄酥的做法
- phpstorm主题下载地址及安装
- 牛客题——点击消除(go)
- Stochastic Depth ResNet
- ffmpeg批量从视频中提取出mp3音频
- BFS(二)二叉树层序遍历(I、II)、二叉树锯齿形层序遍历、N叉树层序遍历
- 基于百度飞浆平台(EasyDL)设计的人脸识别考勤系统