Android 常用 UI 组件

目录

​编辑

1.  View 和ViewGroup

2.  Android UI 开发概述

2.1  界面布局开发

2.2  控件开发

2.3  AdapterView 与 Adapter 开发

2.4  UI 组件开发

2.5  自定义 View、图形图像和动画


1.  View 和ViewGroup

        Android中所有的UI元素都是使用View和ViewGroup对象建立的, View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象,而 ViewGroup是一个包含多个View和ViewGroup 的容器,用来定义 UI 布局。

        Android提供了一系列的View和ViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布局、界面元素绘制和用户交互等工作。同时,开发者还可以选择性地继承一些系统提供的View,来自定义View,把自己定义的界面元素显示给用户。

        Android 使用 View类作为界面开发的超类,所有的界面开发都与 View 有关.多个 View是一个ViewGroup,但ViewGroup本身继承自View,所以, Android界面由View和ViewGroup任意组合而成, Android的界面开发其实就是对View及其各种子孙类做操作。

        Android的UI开发使用层次模型来完戌,一般都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有任意数目的View。我们可以将整个屏幕看做一个ViewGroup,它同时也是一个View.而在这个整体的ViewGroup之中,又有多个ViewGroup和View.每个ViewGroup中又可以有多个子ViewGroup和View,其基本结构如下图3-1所示。

图 3-1 View 和 ViewGroup 基本结构

        需要注意的是,虽然Android没有规定嵌套的层次深度上限,但是经过大量的实际测试证明,以目前主流的Android手机配置,如果一个界面超过10层嵌套,它的性能会大幅下降,这个界面的显示会变慢,所以一般不要让嵌套的层次太多。图 3-1 中所示的 View 和ViewGroup 基本结构中有 3 层嵌套,它的性能就可以完全得到保证。

        由于View和ViewGroup在UI开发中占有很重要的作用,所以有必要讲解一下两者的于孙类继承关系,如图3-2所示,图中的空心箭头表示“继承自”的关系。

图 3-2 View 的子孙类

        如上图 3-2 中所示,View 的子孙类大体上由 ViewGroup 类和一些单个的界面元素组成,而ViewGroup由几个与布局有关的子类继承, Android的UI开发就是组合使用并扩展这些View 子孙类的过程。

        从View和ViewGroup的继承图中可以大致把Android UI的开发划分为两部分,分别是除了ViewGroup之外的View的子孙类的开发和ViewGroup子孙类的开发,但是在ViewGroup的子类中, AdapterView (适配器控件)与其他几种相比是有很大区别的,它的内容是由Adapici (适配器)为其填亢的,所以我们可以把它单独划分为 类。Audvid中还提供一些非继承自 View 的组件,但这些组件都与 UI 开发相关,所以也属于 UI 开发的范畴,可以自成一类。为了满足更加复杂多变的UI设计需求, Android还提供了自定义View的功能,开发者可以通过自定义View来完成各种各样的UI设计与显示任务

2.  Android UI 开发概述

        Android中使用一个叫做“widget”的集合来描述所有的View元素,可称其为View控件,它包括界面布局、控件和 AdapterView 等。综上所述,可以得到如下所述的 5 种 AndroidUI 开发分类。

2.1  界面布局开发

        除AdapterView之外的ViewGroup的子孙类,以下列出的是几种常用的界面布局方式。常用布局,按照横或竖的线性排列布局。

(1) LinearLayout(线性布局)

常用布局,按照横竖线性排列布局。

(2) RelativeLayout (相对布局)

常用布局,按照相对位置来布局。

(3) FrameLayout(帧布局)

一块在屏幕上提前预定好的空白区域,可以填充一些 View 元素到里面。

(4) TableLayout (表格布局)

以表格的形式布局。

(5) AbsoluteLayout (绝对布局)

通过绝对位置坐标布局,但不能做屏幕适配,故不推荐使用。

具体操作介绍:

Android UI 开发·界面布局开发·案例分析:

Android UI 开发·界面布局开发·案例分析-CSDN博客

2.2  控件开发

        继承自View的单个界面元素。 Android自带了几十个控件,常见的比如TextView (文本框) 、EditText (编辑框) 、Button (按钮)、CheckBox (复选框)、ImageView (图片显示控件) 、VideoView (视频播放控件)等。这些控件一般通过各种界面布局方式或AdapterView等被安排在界面中,显示给用户,并与用户进行交互。

2.3  AdapterView 与 Adapter 开发

        AdapterView 的子孙类。除了界面布局方式和基本的控件之外,Android 中还提供了多个与适配器相关的控件,这些控件都使用一个适配器来决定该控件显示的内容,它通常是一个列表,其中的数据由适配器提供,而数据源则比较灵活,可以是程序内部数据、本地数据或网络数据等。常用的系统自带的Adapter有BaseAdapter、 SimpleAdapter和SimpleCursorAdapter等,除此之外,开发者还可以继承BaseAdapter来自定义Adapter.常见的与适配器相关的控件有ListView、 Spinner、 Gallery和GridView等。

2.4  UI 组件开发

        与UI相关的Android组件。Android提供了包括之前讲过的四大组件在内的一套组件,其中有一些是与UI开发相关的,一般将这些与UI开发相关的组件称为UI组件,它们让开发者在设计UI时,多出了一种不使用View和ViewGroup对象的选择。

        UI组件提供了一套标准化的 UI 布局,开发者只需要简单地指定其中的内容,这些组件即可按照各自的布局格式将信息显示在屏幕上,所以使用它们变得非常方便。这些组件通常不是继承自View或ViewGroup,但是它们仍然是使用View的子孙类将信息显示在屏幕上的,所以它们与View的关系非常密切。

        常用的UI组件有Menu、 ActionBar (4.0的新特性) 、Dialog和Notification等,其中Menu 是 View 的子类,而后三者个是。

2.5  自定义 View、图形图像和动画

        无论是控件,还是UI组件,开发者都可以自定义其中的界面布局样式,通常的做法是继承一个View或其子孙类,然后重写一些方法,一般都需要重写onDraw()方法,该方法用来定义在屏幕上如何进行绘制。

        自定义 View 在界面美化、视频图像处理和游戏开发等技术中常被使用。图形图像处理中也大量地应用到了自定义View. Android中提供了一些类库,可以实现动画效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java_网路爬虫_2

连接池 package cn.lala.crawler.httpclient.test;import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClien…

汽车标定技术(二)--基于XCP的标定测量实战

目录 1.工程创建 1.1 新建工程 1.2 设备配置 1.3 标定观测 1.4 刷写 2.原始hex文件与标定文件的合并 2.1 修改memory segment file 2.2 标定量地址偏移 ​编辑 2.3 标定后与原始hex文件合并 2.4 标定后直接merge 2.5 不用对ram地址进行偏移实现hex文件合并 本文使用…

Jdk 1.8 for mac 详细安装教程(含版本切换)

Jdk 1.8 for mac 详细安装教程(含版本切换) 官网下载链接 https://www.oracle.com/cn/java/technologies/downloads/#java8-mac 一、选择我们需要安装的jdk版本,这里以jdk8为例,下载 macOS 版本,M芯片下载ARM64版本…

Google Guava Cache LoadingCache 基本使用

一. 添加依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.1-jre</version> </dependency>二. 创建CacheLoader LoadingCache<Long, String> cache CacheBuilder.newB…

Presentation Prompter 5.4.2(mac屏幕提词器)

Presentation Prompter是一款演讲辅助屏幕提词器软件&#xff0c;旨在帮助演讲者在公共演讲、主持活动或录制视频时更加流畅地进行演讲。以下是Presentation Prompter的一些特色功能&#xff1a; 提供滚动或分页显示&#xff1a;可以将演讲稿以滚动或分页的形式显示在屏幕上&a…

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了&#xff0c;目前通过自学大致掌握了Fabric联盟链的搭建&#xff0c;链码编写、部署&#xff0c;api调用&#xff0c;可以独立开发出一些基于fabric的应用&#xff0c;感觉开发出去中心化的应用还是很有意思的&#xff0c;因为他与之前开发的ssm…

数据集:机器人理解世界的关键

原创 | 文 BFT机器人 传统的机器人和工业自动化解决方案已经颇有成效。在工厂中入驻自动化机器人可以快速地帮助工人们完成长时间重复劳动的任务。随着用工成本上涨、技能人才短缺、工作环境恶劣等问题的凸显&#xff0c;社会更迫切地需要采用自动化设备代替人工来完成该类操作…

Pod控制器详解

目录 一、Pod控制器及其功用 二、Deployment控制器 三、StatefulSet控制器 四、DaemonSet控制器 五、Job控制器 六、CronJob 控制器 一、Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层…

flink状态和检查点

检查点和状态后端的区别 检查点 就是某个时间点下的所有算子的状态快照。这个时间点就是等所有任务将“同一个数据”处理完毕的时候。 状态后端&#xff1a;是一个管理状态的组件&#xff0c;还负责将本地状态&#xff08;检查点&#xff09;持久化到远程文件存储系统中。 分…

解析找不到msvcr100.dll文件的解决方法,4个方法修复msvcr100.dll

msvcr100.dll是Microsoft Visual C 2010运行库的组成部分&#xff0c;一些基于Visual C开发的软件运行时会依赖这个dll文件。出现“找不到msvcr100.dll”的错误提示&#xff0c;往往意味着这个文件在你的计算机系统中丢失或损坏&#xff0c;导致相关程序无法正常运行。以下是找…

大数据之LibrA数据库系统告警处理(ALM-12028 主机D状态进程数超过阈值)

告警解释 系统每30秒周期性检测主机中omm用户D状态进程数&#xff0c;并把实际进程数和阈值相比较。主机D状态进程数默认提供一个阈值范围。当检测到进程数超出阈值范围时产生该告警。 平滑次数为1&#xff0c;主机中omm用户D状态进程数小于或等于阈值时&#xff0c;告警恢复…

MSQL系列(十四) Mysql实战-SQL语句 left join inner join On和Where语句的区别

Mysql实战-SQL语句On和Where语句的区别 前面我们讲解了Join的底层驱动表 选择原理&#xff0c;也知道了基本的内连接外连接两种SQL查询表连接方式 但是我们再查询多表的时候on和where语句到底有什么区别? where是过滤条件 ,不满足where的一定不会出现在结果中on是连接条件, …

[MICROSAR Adaptive] --- Hello Adaptive World

Automotive E/E Architecture and AUTOSAR Adaptive Platform Vector Solution: MICROSAR Adaptive First project: Hello Adaptive World Summary 1 引言 1.1 AP诞生的历史背景 新一代电子电器架构通常将车内的节点分为三类。计算平台,预控制器和传感器执行器相关的节点,…

怎样选择文件外发控制系统,让数据实现高效安全交换?

制造型企业都非常重视其知识产权&#xff08;IP&#xff09;的安全性&#xff0c;尤其是其最有价值的产品设计数据的安全问题。基于复杂的供应链生态&#xff0c;每天可能要与几十家甚至上百家供应商及合作伙伴进行数据交换。不管是一级还是二级供应商&#xff0c;合作伙伴还是…

【黑马程序员】SpringCloud——微服务

文章目录 前言一、服务架构演变1. 单体架构2. 分布式架构2.1 服务治理 3. 微服务3.1 微服务结构3.2 微服务技术对比3.3 企业需求 二、SpringCloud兼容性 三、服务拆分及远程调用1. 服务拆分1.1 服务拆分注意事项1.2 导入服务拆分 Demo 2. 远程调用2.1 根据订单 id 查询订单功能…

Synthetic Data Generation with Large Language Models for Text Classification

本文是LLM系列文章&#xff0c;针对《Synthetic Data Generation with Large Language Models for Text Classification: Potential and Limitations》的翻译。 基于大型语言模型的文本分类合成数据生成&#xff1a;潜力和局限性 摘要1 引言2 相关工作3 方法4 评估1&#xff1…

软考 系统架构设计师系列知识点之边缘计算(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之边缘计算&#xff08;1&#xff09; 所属章节&#xff1a; 第11章. 未来信息综合技术 第4节. 边缘计算概述 3. 边缘计算的特点 边缘计算是在靠近物或数据源头的网络边缘侧&#xff0c;融合网络、计算、存储、应用核心…

JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}

问题&#xff1a;JAVA客户端访问influxdb2报错 说明&#xff1a;当前influxdb版本&#xff1a;2.6.1 使用依赖&#xff1a; <dependency><groupId>org.influxdb</groupId><artifactId>influxdb-java</artifactId><version>2.10</vers…

IDEA插件分享:代码零入侵,后端神器

今天给大家介绍一款好用的IDEA插件&#xff1a;Apipost-Helper-2.0。非常好用&#xff01;主要包含以下功能&#xff1a; 1、无侵入生成API文档 编写完代码后&#xff0c;只需右键upload同步接口即可快速将源码中包含的API以及注解自动生成API文档&#xff0c;并生成可以访问…

Django ORM:数据库操作的Python化艺术

Django的对象关系映射器&#xff08;ORM&#xff09;是其核心功能之一&#xff0c;允许开发者使用Python代码来定义、操作和查询数据库。这篇文章将带你深入了解Django ORM的强大之处&#xff0c;从基本概念到高级查询技巧&#xff0c;提供丰富的示例帮助你掌握使用Django ORM进…