Android应用界面
概述:由于学校原因,估计会考,曹某人就浅学一下。
目录
View概念
创建和使用布局文件
相对布局
线性布局
水平线性布局
垂直线性布局
表格布局
帧布局
扁平化布局
Android控件详解
AdapterView及其子类
View概念
安卓中的View是所有UI控件的基类,它代表着屏幕上的一个矩形区域,用于展示数据和接收用户事件。
- UI控件的基础:在Android开发中,View是构建用户界面的基本元素。无论是文本框(TextView)、按钮(Button)还是图片展示(ImageView),它们都是View的子类。
- 继承关系:所有的UI组件都从android.view.View类继承,这使得它们具有了显示视图的能力。ViewGroup也是View的一个子类,它代表了一组View的集合。
- 位置和大小:View的位置和大小由其四个顶点的坐标决定,这些坐标对应于View的top、left、right、bottom四个属性。
- 自定义View:开发者可以通过自定义View来创建独特的UI组件,以满足特定的设计需求。这包括创建不同形状、颜色和交互方式的视图。
- 事件传递:View不仅负责展示数据,还负责处理用户的交互事件,如点击、滑动等。
- 布局管理:ViewGroup是一种特殊的View,它可以包含其他View或ViewGroup,并负责其子元素的布局管理。常见的ViewGroup包括线性布局(LinearLayout)、相对布局(RelativeLayout)等。
- 可视化控件:在Android系统中,任何可视化控件都需要从android.view.View类继承。这意味着所有的UI组件,无论是标准的还是自定义的,都是View的实例或子类。
很抽象,接下来搞具体的
创建和使用布局文件
创建一个layout xml 文件

点击finish即可


这里先了解布局的概念
布局有七种形式,相对布局、线性布局、表格布局、网格布局、帧布局、绝对布局、扁平化布局
这下面这张图展示了常用的布局
扁平化布局、线性布局水平、线性布局垂直、栈布局、表格布局(估计教材也是老的,kotlin对我而言相当简单)记住常用也是最好用的就是扁平化布局,别听那些乱的

各布局的标签
RelativeLayout
LinearLayout
TableLayout
GridLayout
FrameLayout
AbsoluteLayout
ConstraintLayout
我就讲一下常用的
相对布局
将上面第一种拖拽过去,创建那个文件的时候默认是线性布局,点击Code来到代码地方

手动修改代码即可,一般就改个标签,我就不贴代码了

点击design,回到示图,加几个按钮看效果,同理还是拖拽方式

会发现重合在一起了,查看代码,点击code即可


这种的还要手动去搞相对位置,一般不用这个布局,之所以讲是因为书上写了。我提一下
线性布局
水平线性布局
拖拽按钮呈现

垂直线性布局
第一步:先将布局修改,回到代码地方,进行标签修改

拖拽按钮呈现

表格布局
第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽tablerow


帧布局
第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽button

扁平化布局
第一步:先将布局修改,回到代码地方,进行标签修改

第二步:拖拽button

Android控件详解
Android控件是构成用户界面的基本元素,它们可以响应用户的交互并显示相应的内容。以下是一些常用的Android控件及其详解:
- TextView:用于显示文本信息。它是最常用的控件之一,可以显示静态文本或者动态更新的文本内容。TextView支持多种文本样式和属性设置,如字体大小、颜色、对齐方式等。
- Button:按钮控件,用于触发点击事件。用户可以点击按钮来执行某个操作,如提交表单、打开新页面等。
- EditText:编辑框控件,允许用户输入和编辑文本信息。它通常用于表单中,用于收集用户输入的数据。
- CheckBox:复选框控件,允许用户从多个选项中选择一项或多项。它适用于需要用户做出多个选择的情况。
- RadioButton:单选按钮控件,通常与RadioGroup一起使用,允许用户在一组选项中选择一个。
- ProgressBar:进度条控件,用于显示操作的进度。它可以用来指示加载、下载或其他需要等待的操作进度。
- ImageView:用于显示图片的控件。它可以显示网络图片或本地资源图片,并支持图片的缩放和裁剪。
- ListView:列表视图控件,用于显示一个列表项集合。它非常适用于展示长列表数据,并且可以滚动查看。
- RecyclerView:一个更灵活的列表视图控件,用于替代传统的ListView和GridView。它提供了更好的性能和更丰富的布局管理能力。
- Fragment:片段控件,代表应用中的一个部分或一块功能模块,可以在活动中动态添加和替换。
- Dialog:对话框控件,用于在屏幕上显示一个临时的窗口,通常用于提示用户进行决策或显示额外信息。
- Spinner:下拉列表控件,允许用户从一个列表中选择一个选项。
- SeekBar:滑动条控件,允许用户通过滑动来选择一个范围内的值。
- Switch:开关控件,用于表示开/关状态的切换。
- TabLayout:标签布局控件,通常与ViewPager一起使用,用于实现可滑动的页面和顶部的标签导航。
- ViewPager:页面视图控件,允许用户在左右滑动时切换不同的页面。
- Toolbar:工具栏控件,用于提供应用的导航和操作按钮。
- FloatingActionButton:浮动操作按钮,通常用于表示应用的主要或核心操作。
- CardView:卡片视图控件,用于创建具有圆角和阴影效果的卡片式布局。
- ConstraintLayout:约束布局控件,允许开发者通过创建视图之间的约束来构建复杂的布局。
AdapterView及其子类
AdapterView是Android中用于显示列表数据的抽象基类,其子类包括ListView、GridView和Spinner等。
我举个例子
第一步:编写示图代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/listview1"android:layout_width="match_parent"android:layout_height="wrap_content"android:divider="#C4C4V4"android:entries="@array/teacher_name"android:dividerHeight="1dp"></ListView>
</LinearLayout>
第二步:在values下创建并编写arrays.xml文件

arrays.xml代码
<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="teacher_name"><item>zhangsan</item><item>wangwu</item><item>lisi</item><item>zhaoliu</item></string-array></resources>
在改一下主类即可

AdapterView及其子类在Android开发中扮演着至关重要的角色,它们主要用于展示集合数据。以下是对这些组件的详细介绍:
- AdapterView:作为一个抽象基类,它本身不可直接实例化。它继承自ViewGroup,本质上是一个容器,可以包含多个列表项。这些列表项是由一个称为Adapter的数据适配器提供,通过调用setAdapter()方法来设置。
- ListView:是AdapterView的一个具体实现,以垂直滚动列表的形式展示数据。每个列表项通常是一个简单的布局,如TextView或ImageView。ListView通过使用Adapter来桥接数据源和视图,使得数据可以在屏幕上动态显示。
- GridView:同样继承自AdapterView,但是它是以网格形式展示数据。与ListView不同的是,GridView将数据项按照二维网格排列,适合展示图片等需要网格布局的数据。
- Spinner:也是AdapterView的一个子类,它提供了一个下拉列表,用户可以从中选择一个选项。Spinner通常用于实现单项选择的功能,例如选择国家、语言等。
- 其他子类:除了上述三个常用的子类外,还有一些其他的子类,如AdsListView、AdsSpinner、AdapterViewAnimator等,但它们在实际开发中使用较少。
在实际应用中,开发者需要根据具体的应用场景选择合适的AdapterView子类来实现数据展示的功能。例如,如果想要展示一个图片库,可能会选择GridView;如果是显示一系列的文本或者混合内容,则可能会选择ListView。而Spinner则适用于需要用户从一组选项中做出选择的情况。
相关文章:
Android应用界面
概述:由于学校原因,估计会考,曹某人就浅学一下。 目录 View概念 创建和使用布局文件 相对布局 线性布局 水平线性布局 垂直线性布局 表格布局 帧布局 扁平化布局 Android控件详解 AdapterView及其子类 View概念 安卓中的View是所…...
生活的色彩--爱摸鱼的美工(17)
题记 生活不如意事十之八九, 恶人成佛只需放下屠刀,善人想要成佛却要经理九九八十一难。而且历经磨难成佛的几率也很小,因为名额有限。 天地不仁以万物为刍狗! 小美工记录生活,记录绘画演变过程的一天。 厨房 食…...
【YOLO v5 v7 v8 v9小目标改进】AFPN 渐进式特征金字塔网络:解决多尺度特征融合中,信息在传递过程丢失
AFPN 渐进式特征金字塔网络:解决多尺度特征融合中,信息在传递过程丢失 提出背景AFPN 多尺度特征金字塔 非邻近层次的直接特征融合 自适应空间融合操作 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改YOLO v9 魔改 提出背景 论文:https:…...
问题解决 | vscode无法连接服务器而ssh和sftp可以
解决步骤 进入家目录删除.vscode-server rm -rf .vscode-server 然后再次用vscode连接服务器时,会重新安装,这时可能报出一些缺少依赖的错 需要联系管理员安装相关依赖,比如 sudo apt-get install libstdc6 至此问题解决...
Git 远程操作
1.分布式版本控制系统 我们目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。而我们的 Git 其实是分布式版本控制系统!什么意思呢 可以简单理解为&am…...
Windows C++ 实现远程虚拟打印机(远程共享打印机)
编译错误已经修改完后的工程修改后的下载地址 https://download.csdn.net/download/2403_83063732/88928550 1、下载clawpdf(0.8.7版本) https://github.com/clawsoftware/clawPDF 2、打开clawpdf工程开始编译C#工程,出现如下错误…...
【jvm】java对象占用内存问题深入解析
一个Java对象占用多大内存-CSDN博客 关于Object o new Object()追魂九连问(个人学习笔记) - 知乎JVM(Java虚拟机)-史上最全、最详细JVM笔记-CSDN博客...
金现代产品方案部部长王宁,将出席“ISIG-低代码/零代码技术与应用发展峰会”
3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(LowCode低码时代、RPA中国、AIGC开放社区)主办。大会旨在聚合每一位产业成员的力量,深入探索低…...
数据结构——lesson7二叉树 堆的介绍与实现
前言💞💞 啦啦啦~这里是土土数据结构学习笔记🥳🥳 💥个人主页:大耳朵土土垚的博客 💥 所属专栏:数据结构学习笔记 💥对于数据结构顺序表链表有疑问的都可以在上面数据结…...
阿里云DSW做AI绘画时的显卡选择A10?V100?
V100是Volta架构,A10是Ampere架构,架构上讲A10先进点,其实只是制程区别,用起来没区别。 V100是HBM的内存读取,带宽大,但是DDR5的。 二块卡都是全精度为主的算力卡,半精度优势不明显。 需要用…...
MySQL安装使用(mac)
目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12,所以选择了8.0.30 下载完成之后,打开安装,一直下一步安装完成,在最后安装完成时,会弹出…...
Qt控制台项目也能使用opencv的imshow来显示摄像头视频
创建一个Qt控制台项目,目的是实现在控制台打开摄像头视频。由于windows平台是支持GUI(图形用户界面)功能,所以在windows环境下是可以打开的,但是linux环境下,由于不支持GUI功能,而是支持wayland,…...
前端缓存使用规范
一、Cookie使用规范 cookie的存储空间非常有限且会携带在请求头中会浪费不必要的流量,如果仅仅是为存储数据,可以采用其他替代方案,例如 webStorage,非必要不使用cookie。 1、使用方法 注意:过期时间时需转换成UTC格…...
Linux rmmod命令教程:如何卸载内核模块(附实例详解和注意事项)
Linux rmmod命令介绍 rmmod(全称:remove module)用于从Linux内核中卸载已加载的内核模块。它允许您在运行时移除不再需要的模块,以释放系统资源或更改内核配置。 Linux rmmod命令适用的Linux版本 rmmod在大多数Linux发行版中通…...
中国气象要素年度空间插值数据集
摘要 中国气象要素年度空间插值数据集是地理遥感生态网平台基于全国2400多个站点的气象要素站点日观测数据,在计算各气象要素年值的基础上,基于Anuspl插值软件生成1960-2021年各年度蒸发量、地温、降水量、气压、相对湿度、日照时数 、气温、风速8个气象…...
链表习题-力扣oj (附加思路版)
LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 思路:双指针,快指针先走cnt…...
HNU-计算机网络-甘晴void学习感悟
前言 计算机网络其实我没太学懂, 仅从应试来说,考试成绩也不太好。 这也是为什么一直没有更新这一学科的学习感悟。 大三下还是有点闲,一周三天小长假,闲来无事还是给写了。 教材使用这本: 总领 期中考试 30% 期…...
混合输入矩阵乘法的性能优化
作者 | Manish Gupta OneFlow编译 翻译|宛子琳、杨婷 AI驱动的技术正逐渐融入人们日常生活的各个角落,有望提高人们获取知识的能力,并提升整体生产效率。语言大模型(LLM)正是这些应用的核心。LLM对内存的需求很高&…...
安卓Kotlin面试题 41-50
41、如何在 Kotlin 中实现 Builder 模式?首先,在大多数情况下,您不需要在 Kotlin 中使用构建器,因为我们有默认和命名参数,但如果您需要使用://add private constructor if necessary class Car( val model: String?,val year: Int) { private constructor(build…...
portainer管理远程docker和docker-swarm集群
使用前请先安装docker和docker-compose,同时完成docker-swarm集群初始化 一、portainer-ce部署 部署portainer-ce实时管理本机docker,使用docker-compose一键拉起 docker-compose.yml version: 3 services:portainer:container_name: portainer#imag…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
