0%

安卓autosize屏幕适配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
1. 添加依赖
在你的 App 模块的 build.gradle 文件中添加 AutoSize 依赖:

gradle
dependencies {
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
}
如果无法从 Jcenter 获取(注意 Jcenter 已于 2022 年 2 月后停止维护),可以尝试使用 JitPack 仓库:

gradle
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
}
2. 配置全局设计图尺寸
在 AndroidManifest.xml 的 <application> 标签内添加 meta-data 配置你的设计图尺寸(单位通常为 dp):

xml
<manifest>
<application>
<meta-data
android:name="design_width_in_dp"
android:value="360"/> <!-- 根据你的设计图宽度填写,例如 360 dp -->
<meta-data
android:name="design_height_in_dp"
android:value="640"/> <!-- 根据你的设计图高度填写,例如 640 dp -->
</application>
</manifest>
这里的 value 值需要你根据设计师提供的设计图来定。常见做法是:

如果设计图是 1920x1080 px,通常除以 3(因为 1920/3=640, 1080/3=360),可配置为 360 dp (宽) x 640 dp (高)。

如果设计图是 1280x720 px,通常除以 2(1280/2=640, 720/2=360),同样可配置为 360 dp (宽) x 640 dp (高)。

关键在于:design_width_in_dp 和 design_height_in_dp 的单位必须是 dp。如果设计师只给了 px 尺寸,你需要换算:dp = px / (dpi / 160)。如果不知道设备 DPI,粗略地将 px 尺寸除以 2 或 3 也是一种办法。

3. 初始化 SDK
在你的自定义 Application 类的 onCreate() 方法中进行初始化:

kotlin
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
// 初始化 AutoSize
AutoSize.initCompatMultiProcess(this) // 处理多进程:cite[1]

// 可选:进行高级配置
AutoSizeConfig.getInstance()
.setLog(false) // 设置是否打印日志,默认 true
.setBaseOnWidth(true) // 默认 true,表示以宽度为基准适配。false 则以高度为基准:cite[2]
.setUseDeviceSize(false) // 是否使用设备的实际尺寸做适配,默认为 false:cite[1]
.setExcludeFontScale(false) // 是否屏蔽系统字体大小对 AndroidAutoSize 的影响, 默认为 false:cite[1]
}
}
别忘了在 AndroidManifest.xml 中通过 android:name 属性指定你的 Application 类。

🛠 高级用法与自定义配置
选择布局单位
AutoSize 支持两种类型的布局单位:

单位类型 单位 特点 适用场景
主单位 dp, sp 侵入性低,推荐在新项目中使用。会影响三方库页面、控件及系统控件的布局。
副单位 pt, in, mm 侵入性高,不会影响其他使用 dp 布局的三方库或系统控件。


⚠️ 注意事项
初始化时机:AutoSize 的初始化应在 Application 的 onCreate() 中尽早完成。

设计图尺寸:务必正确配置 design_width_in_dp 和 design_height_in_dp,这是准确适配的基础。

页面自定义:对于与全局设计图尺寸不一致或不需要适配的页面,记得使用 CustomAdapt 或 CancelAdapt 进行个性化配置。

布局预览:在 Android Studio 中布局时,你可能需要创建对应的模拟设备以获得更准确的预览效果。具体创建方法可参考官方文档或社区分享。

ProGuard 混淆:如果启用了代码混淆,请在混淆规则文件(proguard-rules.pro)中添加以下规则:

bash
-keep class me.jessyan.autosize.** { *; }
-keep interface me.jessyan.autosize.** { *; }