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中提供了一些类库,可以实现动画效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java split字符串作业

建立一个字符串操作类(StringDemo),在main函数中做一下操作: 1、定义字符串变量String s1”I am a good student”; String s2”I am a good worker”; String s3”3,6,12,20”; 2、用compareTo方法比较s1和s2的大小,并…

Vue - Syntax Error: TypeError: this.getOptions is not a function 项目运行时报错,详细解决方案

报错问题 关于此问题网上的教程都无法解决,如果您的报错与本文相似,本文即可 100% 完美解决。 在 vue2.js 项目中,执行 npm run serve 运行时出现如下报错信息, Syntax Error: TypeError: this.getOptions is not a function 解决方案 按照以下步骤,即可完美解决。 这个错…

CRM中的销售机会管理是什么?三个步骤帮你创建销售渠道

企业销售业务中,有个名词叫做“机会管理”,有效的机会管理可以帮助销售人员准确地抓住潜在客户群体,并将其转化为真正的客户、持续带来收入。CRM客户管理系统也是销售机会管理的一个重要工具,帮助销售人员与正确的人建立起关系&am…

python 之 集合的相关知识

文章目录 1. 创建集合使用花括号 {}使用 set() 函数 2. 集合的特点3. 集合操作添加元素删除元素 4. 集合运算5. 不可变集合总结 在 Python 中,集合(Set)是一种无序且不重复的数据集合。它是由一组唯一元素组成的。下面是关于集合的一些基本知…

(后续补充)vue+express、gitee pm2部署轻量服务器

首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 关闭防火墙 systemctl stop firewalld 重新载入防火墙使设置生效 firewall-cmd --reload 后端的 pm2.config.cjs …

【小尘送书-第十一期】编程的基石,开发的核心:《算法秘籍》

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

IC设计之《集成电路设计宝典》,共423页,可打印,快来领取吧~~~

集成电路(integrated circuit)是一种微型电子器件或部件。采用一定的工艺,把一个电路中所需的晶体管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内&#…

Corel VideoStudio 会声会影2024剪辑中间的视频怎么删 剪辑中音乐太长怎么办

我很喜欢视频剪辑软件Corel VideoStudio 会声会影2024,因为它使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。视频剪辑软件Corel VideoStudio 会声会影2023让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触…

【网络协议】

网络协议 1 网络通讯1.1 防火墙1.2 子网掩码1.3 网关1.4 2 SSH2.1 SSH2.2 SSH12.3 SSH2 3 Telnet4 Telnet/SSL5 NFS6 TFTP7 FTP8 SFTP9 HTTP10 HTTPS11 NAT12 加密 1 网络通讯 1.1 防火墙 所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法&…

顶板事故防治vr实景交互体验提高操作人员安全防护技能水平

建筑业在我国各行业中属危险性较大且事故多发的行业,在建筑业“八大伤害”(高处坠落、坍塌、物体打击、触电、起重伤害、机械伤害、火灾爆炸及其他伤害)事故中,高处坠落事故的发生率最高、危险性极大。工地现场培训vr坠落体验利用虚拟现实技术还原各种情…

[yarn]yarn异常

一、运行一下算圆周率的测试代码,看下报错 cd /home/data_warehouse/module/hadoop-3.1.3/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 1000 1000 后面2个数字参数的含义: 第1个1000指的是要运行1000次map任务 …

大数据毕业设计选题推荐-超级英雄运营数据监控平台-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

论文阅读:PVT v2: Improved Baselines with Pyramid Vision Transformer

来源:PVTv1 和PVTv2 链接:https://arxiv.org/pdf/2102.12122.pdf 链接:https://arxiv.org/pdf/2106.13797.pdf PVTv2是在PVTv1基础上,所以先介绍PVTv1 Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction…

智能柜+MRO:制造业中的自动售货机

每当谈及企业数字化转型,多数人想到的是人工智能、大数据等高端技术的应用,或是原有业务流程和运营方式的数字化与自动化,实现大幅降本增效等。然而,对于急需在数字时代找到生存之道的企业来说,数字化转型的要求远不止…

技术分享 | Appium 用例录制

下载及安装 下载地址: github.com/appium/appi… 下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。 在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好…

Vuex状态管理(简单易懂、全网最全)

目录 Vuex是什么? 如何部署 如何使用 state 基础使用 在计算属性属性中使用 使用展开运算符 mutations 基础使用 使用辅助函数(mapMutations)简化 使用常量替代 Mutation 事件类型 getters actions 使用辅助函数(…

Databend 开源周报第 118 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 MERGE INTO 现已…

SpringCloudAlibaba - 项目完整搭建(Nacos + OpenFeign + Getway + Sentinel)

目录 一、SpringCloudAlibaba 项目完整搭建 1.1、初始化项目 1.1.1、创建工程 1.1.2、配置父工程的 pom.xml 1.1.3、创建子模块 1.2、user 微服务 1.2.1、配置 pom.xml 1.2.2、创建 application.yml 配置文件 1.2.3、创建启动类 1.2.4、测试 1.3、product 微服务 1…

[答疑]老大不是某组织的负责人吗,为什么说“系统的老大”?

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 第五元素 2023-10-23 8:38 像这道题 研发部要添加一名C#程序员,由人力资源部负责出面招人,请问针对这名C#程序员(一个人脑系统)&#…

如何对ppt文件设置修改权限?

PPT文件会应用在会议、演讲、课件等工作生活中,当我们制作好了PPT之后,保护内容防止在演示时出错是很重要的,那么如何将PPT文件设置成禁止修改模式呢?今天分享几个方法给大家。 方法一 将PPT文件直接保存或者另存为一份文件&…