当前位置: 首页 > news >正文

Android应用界面

概述:由于学校原因,估计会考,曹某人就浅学一下。

目录

View概念

创建和使用布局文件

相对布局

线性布局

水平线性布局

垂直线性布局

表格布局

帧布局

扁平化布局

Android控件详解

AdapterView及其子类


View概念

安卓中的View是所有UI控件的基类,它代表着屏幕上的一个矩形区域,用于展示数据和接收用户事件。

  1. UI控件的基础:在Android开发中,View是构建用户界面的基本元素。无论是文本框(TextView)、按钮(Button)还是图片展示(ImageView),它们都是View的子类。
  2. 继承关系:所有的UI组件都从android.view.View类继承,这使得它们具有了显示视图的能力。ViewGroup也是View的一个子类,它代表了一组View的集合。
  3. 位置和大小:View的位置和大小由其四个顶点的坐标决定,这些坐标对应于View的top、left、right、bottom四个属性。
  4. 自定义View:开发者可以通过自定义View来创建独特的UI组件,以满足特定的设计需求。这包括创建不同形状、颜色和交互方式的视图。
  5. 事件传递:View不仅负责展示数据,还负责处理用户的交互事件,如点击、滑动等。
  6. 布局管理:ViewGroup是一种特殊的View,它可以包含其他View或ViewGroup,并负责其子元素的布局管理。常见的ViewGroup包括线性布局(LinearLayout)、相对布局(RelativeLayout)等。
  7. 可视化控件:在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控件及其详解:

  1. TextView:用于显示文本信息。它是最常用的控件之一,可以显示静态文本或者动态更新的文本内容。TextView支持多种文本样式和属性设置,如字体大小、颜色、对齐方式等。
  2. Button:按钮控件,用于触发点击事件。用户可以点击按钮来执行某个操作,如提交表单、打开新页面等。
  3. EditText:编辑框控件,允许用户输入和编辑文本信息。它通常用于表单中,用于收集用户输入的数据。
  4. CheckBox:复选框控件,允许用户从多个选项中选择一项或多项。它适用于需要用户做出多个选择的情况。
  5. RadioButton:单选按钮控件,通常与RadioGroup一起使用,允许用户在一组选项中选择一个。
  6. ProgressBar:进度条控件,用于显示操作的进度。它可以用来指示加载、下载或其他需要等待的操作进度。
  7. ImageView:用于显示图片的控件。它可以显示网络图片或本地资源图片,并支持图片的缩放和裁剪。
  8. ListView:列表视图控件,用于显示一个列表项集合。它非常适用于展示长列表数据,并且可以滚动查看。
  9. RecyclerView:一个更灵活的列表视图控件,用于替代传统的ListView和GridView。它提供了更好的性能和更丰富的布局管理能力。
  10. Fragment:片段控件,代表应用中的一个部分或一块功能模块,可以在活动中动态添加和替换。
  11. Dialog:对话框控件,用于在屏幕上显示一个临时的窗口,通常用于提示用户进行决策或显示额外信息。
  12. Spinner:下拉列表控件,允许用户从一个列表中选择一个选项。
  13. SeekBar:滑动条控件,允许用户通过滑动来选择一个范围内的值。
  14. Switch:开关控件,用于表示开/关状态的切换。
  15. TabLayout:标签布局控件,通常与ViewPager一起使用,用于实现可滑动的页面和顶部的标签导航。
  16. ViewPager:页面视图控件,允许用户在左右滑动时切换不同的页面。
  17. Toolbar:工具栏控件,用于提供应用的导航和操作按钮。
  18. FloatingActionButton:浮动操作按钮,通常用于表示应用的主要或核心操作。
  19. CardView:卡片视图控件,用于创建具有圆角和阴影效果的卡片式布局。
  20. 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应用界面

概述&#xff1a;由于学校原因&#xff0c;估计会考&#xff0c;曹某人就浅学一下。 目录 View概念 创建和使用布局文件 相对布局 线性布局 水平线性布局 垂直线性布局 表格布局 帧布局 扁平化布局 Android控件详解 AdapterView及其子类 View概念 安卓中的View是所…...

生活的色彩--爱摸鱼的美工(17)

题记 生活不如意事十之八九&#xff0c; 恶人成佛只需放下屠刀&#xff0c;善人想要成佛却要经理九九八十一难。而且历经磨难成佛的几率也很小&#xff0c;因为名额有限。 天地不仁以万物为刍狗&#xff01; 小美工记录生活&#xff0c;记录绘画演变过程的一天。 厨房 食…...

【YOLO v5 v7 v8 v9小目标改进】AFPN 渐进式特征金字塔网络:解决多尺度特征融合中,信息在传递过程丢失

AFPN 渐进式特征金字塔网络&#xff1a;解决多尺度特征融合中&#xff0c;信息在传递过程丢失 提出背景AFPN 多尺度特征金字塔 非邻近层次的直接特征融合 自适应空间融合操作 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改YOLO v9 魔改 提出背景 论文&#xff1a;https:…...

问题解决 | vscode无法连接服务器而ssh和sftp可以

解决步骤 进入家目录删除.vscode-server rm -rf .vscode-server 然后再次用vscode连接服务器时&#xff0c;会重新安装&#xff0c;这时可能报出一些缺少依赖的错 需要联系管理员安装相关依赖&#xff0c;比如 sudo apt-get install libstdc6 至此问题解决...

Git 远程操作

1.分布式版本控制系统 我们目前所说的所有内容&#xff08;工作区&#xff0c;暂存区&#xff0c;版本库等等&#xff09;&#xff0c;都是在本地&#xff01;也就是在你的笔记本或者计算机上。而我们的 Git 其实是分布式版本控制系统&#xff01;什么意思呢 可以简单理解为&am…...

Windows C++ 实现远程虚拟打印机(远程共享打印机)

编译错误已经修改完后的工程修改后的下载地址 https://download.csdn.net/download/2403_83063732/88928550 1、下载clawpdf&#xff08;0.8.7版本&#xff09; https://github.com/clawsoftware/clawPDF 2、打开clawpdf工程开始编译C#工程&#xff0c;出现如下错误&#xf…...

【jvm】java对象占用内存问题深入解析

一个Java对象占用多大内存-CSDN博客 关于Object o new Object()追魂九连问&#xff08;个人学习笔记&#xff09; - 知乎JVM&#xff08;Java虚拟机&#xff09;-史上最全、最详细JVM笔记-CSDN博客...

金现代产品方案部部长王宁,将出席“ISIG-低代码/零代码技术与应用发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;LowCode低码时代、RPA中国、AIGC开放社区&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索低…...

数据结构——lesson7二叉树 堆的介绍与实现

前言&#x1f49e;&#x1f49e; 啦啦啦~这里是土土数据结构学习笔记&#x1f973;&#x1f973; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5; 所属专栏&#xff1a;数据结构学习笔记 &#x1f4a5;对于数据结构顺序表链表有疑问的都可以在上面数据结…...

阿里云DSW做AI绘画时的显卡选择A10?V100?

V100是Volta架构&#xff0c;A10是Ampere架构&#xff0c;架构上讲A10先进点&#xff0c;其实只是制程区别&#xff0c;用起来没区别。 V100是HBM的内存读取&#xff0c;带宽大&#xff0c;但是DDR5的。 二块卡都是全精度为主的算力卡&#xff0c;半精度优势不明显。 需要用…...

MySQL安装使用(mac)

目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12&#xff0c;所以选择了8.0.30 下载完成之后&#xff0c;打开安装&#xff0c;一直下一步安装完成&#xff0c;在最后安装完成时&#xff0c;会弹出…...

Qt控制台项目也能使用opencv的imshow来显示摄像头视频

创建一个Qt控制台项目,目的是实现在控制台打开摄像头视频。由于windows平台是支持GUI&#xff08;图形用户界面&#xff09;功能&#xff0c;所以在windows环境下是可以打开的&#xff0c;但是linux环境下&#xff0c;由于不支持GUI功能&#xff0c;而是支持wayland&#xff0c…...

前端缓存使用规范

一、Cookie使用规范 cookie的存储空间非常有限且会携带在请求头中会浪费不必要的流量&#xff0c;如果仅仅是为存储数据&#xff0c;可以采用其他替代方案&#xff0c;例如 webStorage&#xff0c;非必要不使用cookie。 1、使用方法 注意&#xff1a;过期时间时需转换成UTC格…...

Linux rmmod命令教程:如何卸载内核模块(附实例详解和注意事项)

Linux rmmod命令介绍 rmmod&#xff08;全称&#xff1a;remove module&#xff09;用于从Linux内核中卸载已加载的内核模块。它允许您在运行时移除不再需要的模块&#xff0c;以释放系统资源或更改内核配置。 Linux rmmod命令适用的Linux版本 rmmod在大多数Linux发行版中通…...

中国气象要素年度空间插值数据集

摘要 中国气象要素年度空间插值数据集是地理遥感生态网平台基于全国2400多个站点的气象要素站点日观测数据&#xff0c;在计算各气象要素年值的基础上&#xff0c;基于Anuspl插值软件生成1960-2021年各年度蒸发量、地温、降水量、气压、相对湿度、日照时数 、气温、风速8个气象…...

链表习题-力扣oj (附加思路版)

LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号&#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 思路&#xff1a;双指针&#xff0c;快指针先走cnt…...

HNU-计算机网络-甘晴void学习感悟

前言 计算机网络其实我没太学懂&#xff0c; 仅从应试来说&#xff0c;考试成绩也不太好。 这也是为什么一直没有更新这一学科的学习感悟。 大三下还是有点闲&#xff0c;一周三天小长假&#xff0c;闲来无事还是给写了。 教材使用这本&#xff1a; 总领 期中考试 30% 期…...

混合输入矩阵乘法的性能优化

作者 | Manish Gupta OneFlow编译 翻译&#xff5c;宛子琳、杨婷 AI驱动的技术正逐渐融入人们日常生活的各个角落&#xff0c;有望提高人们获取知识的能力&#xff0c;并提升整体生产效率。语言大模型&#xff08;LLM&#xff09;正是这些应用的核心。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&#xff0c;同时完成docker-swarm集群初始化 一、portainer-ce部署 部署portainer-ce实时管理本机docker&#xff0c;使用docker-compose一键拉起 docker-compose.yml version: 3 services:portainer:container_name: portainer#imag…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...