项目结构
- java文件夹下:业务逻辑
- AndroidManifest.xml:项目配置文件
- res/layout文件夹下:页面布局
- res/values文件夹下:全局常量
- res/drawable文件夹下:图片资源
- res/mipmap系列:不同分辨率的图片资源,根据屏幕大小使用不同规格的图片,一般放APP图标
单位
| 单位 | 说明 |
|---|---|
| dp | device independent pixels(设备独立像素),不同设备有不同的显示效果,推荐使用这个 |
| sp | scaled pixels(放大像素),字体大小一般用这个 |
| px | pixels(像素) |
| pt | point,1pt = 1/72 英寸 |
四大组件
- Activity :
- Service :
- BroadcastReceiver :允许你的应用接收来自各处的广播消息,比如电话、短信等,当然,你的应用也可以向外发出广播消息
- ContentProvider :为应用程序之间共享数据提供了可能,比如你想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现
六大基本布局
- 线性布局 LinearLayout :View按水平或竖直排列
- 相对布局 RelativeLayout :使用margin和padding相对父容器布局
- 表格布局 TableLayout :
<TableLayout>内使用<TableRow>定义一行,<TableRow>中几个元素就是几列 - 帧布局 FrameLayout :即叠层布局。帧布局的大小由控件中最大的子控件决定
- 绝对布局 AbsoluteLayout :已弃用,建议改用 ConstraintLayout
- 网格布局 GridLayout :将视图按格子排列
Log
Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志(级别从低到高)。
- Log.v()。级别
verbose,用于打印那些最为琐碎的、意义最小的日志信息 - Log.d()。级别
debug,用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的 - Log.i()。级别
info,用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为的数据 - Log.w()。级别
warn,用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方 - Log.e()。级别
error,用于打印程序中的错误信息,一般代表你的程序出现严重问题了,必须尽快修复
Android中的序列化
Parcelable,读作/ˈpɑːrsələbəl/。
TODO
ListView
详见我的另一篇文章:Android中的ListView
RecyclerView
详见我的另一篇文章:Android中的ListView
ShapeableImageView
详见我的另一篇文章:Android中的ShapeableImageView
使用阿里巴巴图标库
首先在阿里巴巴图标库下载svg图标,保存位置任意:

drawable文件夹右键创建 Vector Asset:

如图选择 Local file,选择svg文件的路径:

报错:No speakable text present
程序期望有一些可以被说出来的文本,用于无障碍朗读模式之类的,但是在提供的数据中并没有找到可以被转化为语音的文本。
解决方法:tools:ignore="SpeakableTextPresentCheck"
CLEARTEXT communication to xx.xx.xx.xx not permitted by network security policy
出于安全性考虑,Android 9.0 后默认只支持HTTPS而不允许使用HTTP,要使用HTTP需要在AndroidManifest.xml中<application>内添加android:usesCleartextTraffic="true"