Android笔记

项目结构

  • 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 英寸

View 和 ViewGroup

  • 页面上的一个UI组件就是一个View,如<TextView><Button>
  • ViewGroup是一组View的布局方式,如<LinearLayout><RelativeLayout>

四大组件

  • Activity
  • Service
  • BroadcastReceiver :允许你的应用接收来自各处的广播消息,比如电话、短信等,当然,你的应用也可以向外发出广播消息
  • ContentProvider :为应用程序之间共享数据提供了可能,比如你想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现

六大基本布局

  • 线性布局 LinearLayout :View按水平或竖直排列
  • 相对布局 RelativeLayout :使用margin和padding相对父容器布局
  • 表格布局 TableLayout<TableLayout>内使用<TableRow>定义一行,<TableRow>中几个元素就是几列
  • 帧布局 FrameLayout :即叠层布局。帧布局的大小由控件中最大的子控件决定
  • 绝对布局 AbsoluteLayout :已弃用,建议改用 ConstraintLayout
  • 网格布局 GridLayout :将视图按格子排列

线性布局 LinearLayout

xml参数 取值 说明
layout_width “match_parent”、”wrap_content” 线性布局的宽度
layout_height “match_parent”、”wrap_content” 线性布局的高度
orientation “vertical”、”horizontal” 内部视图排序方向
divider 一个视图View 内部每两个相邻视图之间都有一个View

LinearLayout 内视图参数

xml参数 取值 说明
layout_width “match_parent”、”wrap_content” 线性布局的宽度
layout_height “match_parent”、”wrap_content” 线性布局的高度
layout_weight 1、2、3、…… 该视图占整个线性布局大小的权重,使用该参数时注意 layout_width 与 layout_height 要有一个为 “wrap_content”

约束布局 ConstraintLayout

xml参数 取值 说明
layout_width “match_parent”、”wrap_content” 约束布局的宽度
layout_height “match_parent”、”wrap_content” 约束布局的高度

ConstraintLayout 内视图参数

xml参数 取值 说明
layout_constraintTop_toTopOf parent、id 子视图的顶部与其他视图的顶部对齐
layout_constraintLeft_toRightOf parent、id 子视图的左部与其他视图的右部对齐
layout_constraintHorizontal_bias [0, 1] 该值越大子视图越往右,0.5时居中,bias = 子视图左部到父视图左部的距离 / 子视图左部到父视图左部的距离 + 子视图右部到父视图右部的距离

网格布局 GridLayout

xml参数 取值 说明
rowCount 1、2、3、…… 共有几行
columnCount 1、2、3、…… 共有几列
orientation “horizontal”、”vertical” 内部视图排序方向

GridLayout 内视图参数

xml参数 取值 说明
layout_rowSpan 1、2、3、…… 该视图横跨几列
layout_columnSpan 1、2、3、…… 该视图竖跨几行
layout_gravity “fill”、…… 有使用以上两参数,则该参数为”fill”

表格布局 TableLayout

xml参数 取值 说明
stretchColumns 0、1、2、…… 被拉伸的列序号
hint 任意字符串 输入框为空时的提示词,无该参数会报错

Log

Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志(级别从低到高)。

  • Log.v()。级别verbose,用于打印那些最为琐碎的、意义最小的日志信息
  • Log.d()。级别debug,用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的
  • Log.i()。级别info,用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为的数据
  • Log.w()。级别warn,用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方
  • Log.e()。级别error,用于打印程序中的错误信息,一般代表你的程序出现严重问题了,必须尽快修复

TextView

xml参数 取值 说明
textStyle bold、italic等 字体样式,如加粗、斜体等
shadowRadius 浮点数 阴影模糊程度
singleLine true、false 文本单行显示
ellipsize end等 文本超出范围的省略方式

EditText

xml参数 取值 说明
inputType text、number等 指明输入内容的类型以弹出对应键盘
hint 任意字符串 输入框为空时的提示词,无该参数会报错
drawableXXX Vector 在输入框的指定方位添加icon或图片
hint 任意字符串 输入框为空时的提示词,无该参数会报错
kotlin方法 返回值 说明
getText 返回输入框中的内容

Button

xml参数 取值 说明
onClick 字符串,为点击后要执行的方法名 点击按钮后会调用对应的方法,与 setOnClickListener 相同
background selector 按钮背景图片
backgroundTint selector 按钮背景图片颜色
textAllCaps 布尔值 当为true时按钮的文字会全部变成大写

ListView

详见我的另一篇文章:Android中的ListView

RecyclerView

详见我的另一篇文章:Android中的ListView

ShapeableImageView

详见我的另一篇文章:Android中的ShapeableImageView

使用阿里巴巴图标库

首先在阿里巴巴图标库下载svg图标,保存位置任意:

下载svg图标

drawable文件夹右键创建 Vector Asset:

创建xml文件

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

创建asset

报错: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"