【1个月速成Java】基于Android平台开发个人记账app学习日记——第3天,分析项目结构

24.11.02

1.分析项目初始结构

IDEA有2种查看Android项目模式,一种是原始的projects模式,重点介绍这个模式下的项目结构

Android模式下的项目结构

这个是经过Android处理后的,并不是真正的项目结构,但是看着很简洁

projects模式下的项目结构

在初始化一个Android项目后,会有如下的目录,下面一一介绍:

1. .gradle文件夹

.gradle文件夹 是gradle 运行以后生成的缓存文件夹。无需关心,也不要手动去改。

2. .idea文件夹

Android studio自动生成运行的项目配置文件,包括代码样式、拼写检查器等。无需关心,也不用手动去改

3.app文件夹

默认生成的模块名,项目中的代码、资源都是放置在这个目录下的。

 app文件夹展开后有build文件夹,src文件夹。其中build文件夹是编译的时候自动产生的文件存放地,不用管。

下面详细介绍src文件夹下的东西:首先是安卓测试文件夹,可以在里面编写一些项目功能的测试

然后是main/java,里面存放项目的逻辑代码,Java和kotlin都可以

 

然后是main/res,里面存放项目的各种资源包括图片,布局等。详细介绍下每个文件夹对应的资源含义。

  • drawable文件夹

用来存放图片的

  • mipmap开头

用来存放应用图标的,这么多mimmap开头的文件夹,也是为了能够让程序能够更好的兼容各种设备。打开里面可以看到就是不同分辨率的同一个图片。

然后是values,用来存放颜色、字符串、样式等配置的。

最后是AndroidManifest.xml这个文件,它是Android项目的配置文件,Android四大组件以及应用权限都要在这里注册和声明。下面是初始化的内容

 后面的一些文件夹就不做详细介绍,影响不大。

2.安卓项目开发知识普及

一、布局管理 (Layout Management)

布局是 Android 界面设计的基础,通过布局可以将不同控件以特定的方式排列。

  1. 常见布局管理器

    • LinearLayout:线性布局,可以水平或垂直排列子元素。可以使用 layout_weight 来分配控件占用的空间比例。
    • RelativeLayout:相对布局,可以相对于其他控件或父控件对齐,灵活性强,但层次关系较复杂。
    • ConstraintLayout:约束布局,允许在设计 UI 时创建复杂的布局,性能比 RelativeLayout 更好,推荐用于复杂界面设计。
    • FrameLayout:帧布局,通常用于堆叠控件,将多个视图叠加显示。
    • GridLayout:网格布局,可以将元素按行列排列,适合实现表格或网格样式的 UI。
    • TableLayout:表格布局,适合显示表格数据,行与列的布局灵活。
  2. 布局文件与 XML:布局通常通过 XML 文件定义,位于 res/layout 文件夹中,例如 activity_main.xml。每个 XML 文件定义了一个界面的布局结构,系统会将 XML 转换为 View 对象。


二、常用基本控件

  1. TextView:用于显示文本,可以设置文本大小、颜色、样式等。
  2. EditText:文本输入框,允许用户输入文本数据。可以设置输入类型(如数字、密码)。
  3. Button:按钮,点击时触发相应事件。常见的有 ButtonImageButton(带图像按钮)。
  4. ImageView:用于显示图片,可以加载资源文件或 URL 中的图片。
  5. CheckBox:复选框,允许用户选择或取消选择。
  6. RadioButton:单选按钮,通常用于 RadioGroup 中实现单选功能。
  7. ProgressBar:进度条,用于显示任务的进度,例如文件下载进度。

三、高级控件

  1. RecyclerView:可滚动列表,适合显示大量数据并支持自定义布局,是 ListView 的升级版。
  2. CardView:卡片视图,通常与 RecyclerView 搭配使用,用于创建卡片样式的 UI。
  3. ViewPager:用于在多个视图之间滑动切换,适合实现图片轮播或分屏界面。
  4. ScrollView:滚动视图,允许在内容超出屏幕时滚动显示。
  5. WebView:允许在应用内加载网页,可用于显示 HTML 内容或在线网页。
  6. Toolbar:工具栏,是 ActionBar 的替代,通常用于显示标题、菜单等,可以定制外观和功能。
  7. FloatingActionButton:浮动操作按钮,通常用于关键操作,如在聊天应用中发送消息。
  8. SearchView:搜索框控件,允许用户输入搜索内容,可与 ListViewRecyclerView 结合实现搜索功能。

四、四大组件

1. Activity
  • 定义:Activity 是应用的主要界面,每个 Activity 表示应用的一个屏幕。当用户点击应用图标启动应用时,系统会创建一个 Activity 并显示给用户。
  • 生命周期:Activity 具有完整的生命周期方法,如 onCreate()onStart()onResume()onPause()onStop()onDestroy(),这些方法帮助管理 Activity 的状态变化。
  • 启动模式:包括 standardsingleTopsingleTasksingleInstance,控制 Activity 在任务栈中的行为。
  • Intent:Activity 可以通过 Intent 与其他组件通信和数据传递。
2. Service
  • 定义:Service 是一个在后台运行的组件,用于执行长时间运行的操作,比如播放音乐、下载文件、处理网络请求等。用户通常看不到它的运行界面。
  • 生命周期:Service 的生命周期方法主要有 onCreate()onStartCommand()onBind()onDestroy()。有两种主要类型:
    • Started Service:通过 startService() 启动,独立运行直到调用 stopService()stopSelf()
    • Bound Service:通过 bindService() 绑定,允许其他组件与其进行通信。
  • IntentService:IntentService 是 Service 的子类,自动在工作完成后结束自身,适合一次性后台任务。
3. Content Provider
  • 定义:Content Provider 是一种数据共享机制,允许不同应用之间共享数据。它使用 URI (Uniform Resource Identifier) 标识数据,可以将数据库内容暴露给其他应用。
  • 常用方法:Content Provider 提供了一些标准方法,包括 query()insert()update()delete(),供其他应用使用。
  • URI 和权限控制:通过 URI 访问特定数据资源,应用还可以设置权限,限制其他应用访问敏感数据。
  • 应用场景:如 Android 自带的联系人、媒体库就是通过 Content Provider 对外提供数据访问的。
4. Broadcast Receiver
  • 定义:Broadcast Receiver 用于监听系统或应用的广播消息。通过它,应用可以响应系统事件(如电量低、屏幕熄灭)或自定义的广播。
  • 广播类型
    • 标准广播:无序广播,广播会同时传递给所有接收者。
    • 有序广播:按优先级顺序发送给接收者,每个接收者可以终止广播的传递。
  • 注册方式:可以通过 AndroidManifest.xml 静态注册,或者在代码中动态注册。
  • 应用场景:监听网络变化、开机启动、短信接收等场景。

这些组件和控件构成了 Android 应用开发的基础,帮助开发者管理界面布局、数据交互以及系统事件响应。每个组件在应用中有着明确的职责,通过组合使用可以实现丰富的应用功能。

至此,我们对安卓app的开发有了一个大致的了解,从下一篇文章开始,我们就将着眼于具体界面和功能的开发了!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

chrome编辑替换js文件的图文教程

一、找到要修改替换的js文件 二、将文件保存到本地 三、在本地新建一个文件 路径最好跟你要替换的文件的路径保持一致, 四、选中js文件替换 回到原文件右击选择保存并覆盖 点击完保存并覆盖之后回到替换的新文件中,在自动生成的webpack文件中对文件进…

大学城水电管理:Spring Boot应用案例

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理大学城水电管理系统的相关信息成为必然。开…

硅谷15菜单权限

菜单权限 15.1 路由的拆分 15.1.1 路由分析 菜单的权限: 超级管理员账号:admin atguigu123 拥有全部的菜单、按钮的权限 飞行员账号 硅谷333 111111 不包含权限管理模块、按钮的权限并非全部按钮 同一个项目:不同人(职位是不一样的,他能访问到的菜单、…

3D Gaussian Splatting代码详解(二):模型构建

3 模型构建 gaussians GaussianModel(dataset.sh_degree) 3.1 初始化函数 __init__ 构造函数 构造函数 __init__ 的主要作用是初始化 3D 高斯模型的各项参数和激活函数,用于生成 3D 空间中的高斯表示。 初始化球谐函数的参数: self.active_sh_degre…

初知C++:继承

文章目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承基类成员访问方式的变化 2.基类和派生类间的转换3. 继承中的作用域3.1 隐藏规则3.2 考察继承作用域相关选择题 4. 派生类的默认成员函数4.1 4个常见默认成员函数4.2实现一个不能被继承的类 5. …

Java实战项目-基于 SpringBoot+Vue 的医院管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

二分,CF 2036 G - Library of Magic

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 G - Library of Magic 二、解题报告 1、思路分析 首先 query(1, n) a ^…

【测试平台】打包 子节点ios环境配置

主要记录如何配置ios打包机环境,ios环境相对来说比较简单的,研发配置好证书可以本地打包,接入流程比较简单了。 打包机系统升级 1.升级mac OS系统 一般升级好几个小时,可以晚上下载好 2.下载xcode并安装 Appstroe 下载安装xco…

矩阵的奇异值分解SVD

为了论述矩阵的奇异值与奇异值分解!需要下面的结论!

parted 磁盘分区

目录 磁盘格式磁盘分区文件系统挂载使用扩展 - parted、fdisk、gdisk 区别 磁盘格式 parted /dev/vdcmklabel gpt # 设置磁盘格式为GPT p # 打印磁盘信息此时磁盘格式设置完成! 磁盘分区 开始分区: mkpart data_mysql # 分区名&…

【Linux】权限管理

目录 一、shell: 二、权限: 1、用户理解: 2、文件权限: 3、目录权限: 4、权限掩码: 5、粘滞位: 一、shell: Linux操作系统不仅仅是指Linux内核,而是指基于Linux内核…

【C++ | 数据结构】八大常用排序算法详解

1. 排序的稳定性 排序是我们生活中经常会面对的问题,小朋友站队的时候会按照从矮到高的顺序排列;老师查看上课出勤情况时,会按照学生的学号点名;高考录取时,会按照成绩总分降序依次录取等等。那么对于排序它是如何定义…

PG数据库 jsonb字段 模糊查询

背景: 项目由于多语言的设计,将字段设置成json字段类型,同时存储中文和英文 页面上通过输入框实现模糊的查询 一、表结构:name字段设置jsonb类型 二、表数据 3、Mybatis编写sql select pp.name ->>zh-CN as pmsProductNam…

webpack使用详解

摘要:webpack作为一款主流的构建工具,对比后来者Vite虽然存在一些缺点,例如启动慢,配置复杂等。在很多项目中使用依然基于webpack构建,有必要掌握其概念、构建流程和配置方法。 1 webpack概述 1.1 基本概念 webpack …

【flutter列表播放器】

视频播放器类 import package:jade/configs/PathConfig.dart; import package:jade/utils/Utils.dart; import package:model/user_share/reward_pool_model.dart; import package:pages/user_share/view/user_share_article_detail_page.dart; import package:util/navigato…

Ubuntu Linux

起源与背景 Ubuntu起源于南非,其名称“Ubuntu”来源于非洲南部祖鲁语或豪萨语,意为“人性”、“我的存在是因为大家的存在”,这体现了非洲传统的一种价值观。Ubuntu由南非计算机科学家马克沙特尔沃斯(Mark Shuttleworth&#xff…

ctfshow web入门文件上传总结

1.web151 前端验证 前端验证&#xff0c;修改html代码&#xff0c;上传还有一句话木马的php文件,之后用蚁剑连接即可找到flag <?php eval($_POST[1])?>2.web152 后端验证&#xff0c;修改mime类型(content-type) burp抓包&#xff0c;修改content-type为image/png …

18.04Ubuntu网络一直connecting的问题

有段时间没登VMware的Ubuntu了&#xff0c;就知道这个Ubuntu一登必有问题。 如果你的网络一直connecting 设置成桥接模式就可以了&#xff01;

用Python设置、更新和获取Excel单元格的值

Excel工作簿作为一款广泛使用的数据管理工具&#xff0c;与Python相结合&#xff0c;可以使得自动化处理大量数据成为可能。通过Python来设置、更新以及读取Excel单元格的值&#xff0c;不仅可以极大地提高工作效率&#xff0c;减少重复劳动&#xff0c;还能增强数据处理流程的…

从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09; 文章目录 从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09;一、前言二、vue项目部署前配置1、vite.config.js 增加…