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 界面设计的基础,通过布局可以将不同控件以特定的方式排列。
-
常见布局管理器:
- LinearLayout:线性布局,可以水平或垂直排列子元素。可以使用
layout_weight
来分配控件占用的空间比例。 - RelativeLayout:相对布局,可以相对于其他控件或父控件对齐,灵活性强,但层次关系较复杂。
- ConstraintLayout:约束布局,允许在设计 UI 时创建复杂的布局,性能比
RelativeLayout
更好,推荐用于复杂界面设计。 - FrameLayout:帧布局,通常用于堆叠控件,将多个视图叠加显示。
- GridLayout:网格布局,可以将元素按行列排列,适合实现表格或网格样式的 UI。
- TableLayout:表格布局,适合显示表格数据,行与列的布局灵活。
- LinearLayout:线性布局,可以水平或垂直排列子元素。可以使用
-
布局文件与 XML:布局通常通过 XML 文件定义,位于
res/layout
文件夹中,例如activity_main.xml
。每个 XML 文件定义了一个界面的布局结构,系统会将 XML 转换为 View 对象。
二、常用基本控件
- TextView:用于显示文本,可以设置文本大小、颜色、样式等。
- EditText:文本输入框,允许用户输入文本数据。可以设置输入类型(如数字、密码)。
- Button:按钮,点击时触发相应事件。常见的有
Button
、ImageButton
(带图像按钮)。 - ImageView:用于显示图片,可以加载资源文件或 URL 中的图片。
- CheckBox:复选框,允许用户选择或取消选择。
- RadioButton:单选按钮,通常用于
RadioGroup
中实现单选功能。 - ProgressBar:进度条,用于显示任务的进度,例如文件下载进度。
三、高级控件
- RecyclerView:可滚动列表,适合显示大量数据并支持自定义布局,是
ListView
的升级版。 - CardView:卡片视图,通常与
RecyclerView
搭配使用,用于创建卡片样式的 UI。 - ViewPager:用于在多个视图之间滑动切换,适合实现图片轮播或分屏界面。
- ScrollView:滚动视图,允许在内容超出屏幕时滚动显示。
- WebView:允许在应用内加载网页,可用于显示 HTML 内容或在线网页。
- Toolbar:工具栏,是
ActionBar
的替代,通常用于显示标题、菜单等,可以定制外观和功能。 - FloatingActionButton:浮动操作按钮,通常用于关键操作,如在聊天应用中发送消息。
- SearchView:搜索框控件,允许用户输入搜索内容,可与
ListView
或RecyclerView
结合实现搜索功能。
四、四大组件
1. Activity
- 定义:Activity 是应用的主要界面,每个 Activity 表示应用的一个屏幕。当用户点击应用图标启动应用时,系统会创建一个 Activity 并显示给用户。
- 生命周期:Activity 具有完整的生命周期方法,如
onCreate()
、onStart()
、onResume()
、onPause()
、onStop()
和onDestroy()
,这些方法帮助管理 Activity 的状态变化。 - 启动模式:包括
standard
、singleTop
、singleTask
和singleInstance
,控制 Activity 在任务栈中的行为。 - Intent:Activity 可以通过 Intent 与其他组件通信和数据传递。
2. Service
- 定义:Service 是一个在后台运行的组件,用于执行长时间运行的操作,比如播放音乐、下载文件、处理网络请求等。用户通常看不到它的运行界面。
- 生命周期:Service 的生命周期方法主要有
onCreate()
、onStartCommand()
、onBind()
和onDestroy()
。有两种主要类型:- Started Service:通过
startService()
启动,独立运行直到调用stopService()
或stopSelf()
。 - Bound Service:通过
bindService()
绑定,允许其他组件与其进行通信。
- Started Service:通过
- 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的开发有了一个大致的了解,从下一篇文章开始,我们就将着眼于具体界面和功能的开发了!