英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
A low-cost Android screen adaptation solution (今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案).
概览
Pixel 2 XL | 1440 x 2880 | 560dpi:
Pixel XL | 1440 x 2560 | 560dpi:
Nexus 5X | 1080 x 1920 | 420dpi:
Nexus 4 | 768 x 1280 | 320dpi:
Nexus S | 480 x 800 | 240dpi:
通知
下载
Jcenter(⚠️ 弃用警告:JCenter 仓库将继续提供包直到 2022 年 2 月 1 日):
implementation 'me.jessyan:autosize:1.2.1'
JitPack:
第1步。在你的根目录 build.gradle 文件中,在 repositories 的末尾添加 JitPack 仓库:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
步骤 2. 添加依赖项
dependencies {
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
}
使用
步骤 1(仅一步)
- 在 AndroidManifest 中初始化,如果你使用子单位,你可以直接写像素大小,无需将像素转换为 dp,请参见 demo-subunits
<manifest> <application> <meta-data android:name="design_width_in_dp" android:value="360"/> <meta-data android:name="design_height_in_dp" android:value="640"/> </application> </manifest>
预览
-
布局时的实时预览是开发阶段的重要部分,在很多情况下,Android Studio 提供的默认预览设备不能完全显示我们的设计,因此我们需要自己创建虚拟设备,在 dp、pt、in、mm 四种单位下创建虚拟设备的方法
-
如果你在预览时不想在 Preview 中显示状态栏和导航栏,可以根据下图选择 panel 主题,使用此主题后,垂直分辨率正好填满整个预览页面
-
虚拟设备创建方法
DP
- 如果你在 layout 文件中使用 dp 作为布局单位(AndroidAutoSize 默认支持 dp、sp 作为布局单位),你可以根据公式 (sqrt(垂直分辨率^2 + 水平分辨率^2))/dpi 找出屏幕尺寸,并创建虚拟设备(只填写屏幕尺寸和分辨率)
PT
- 如果你在 layout 文件中使用 pt 作为布局单位(需要 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.PT); 开启 pt 支持),你可以根据公式 (sqrt(垂直分辨率^2 + 水平分辨率^2))/72 找出屏幕尺寸,并创建虚拟设备(只填写屏幕尺寸和分辨率)
IN
- 如果你在 layout 文件中使用 in 作为布局单位(需要 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.IN); 开启 in 支持),你可以根据公式 sqrt(垂直分辨率^2 + 水平分辨率^2) 找出屏幕尺寸,并创建虚拟设备(只填写屏幕尺寸和分辨率)
MM
- 如果你在 layout 文件中使用 mm 作为布局单位(需要 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(Subunits.MM); 开启 mm 支持),你可以根据公式 (sqrt(垂直分辨率^2 + 水平分辨率^2))/25.4 找出屏幕尺寸,并创建虚拟设备(只填写屏幕尺寸和分辨率)
高级(查看演示)
活动
-
自定义活动的适应参数:
public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt { @Override public boolean isBaseOnWidth() { return false; } @Override public float getSizeInDp() { return 667; } } -
取消活动的调整:
public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {
}
### 片段
* **首先启用支持片段自定义参数的功能**
```java
AutoSizeConfig.getInstance().setCustomFragment(true);
-
自定义碎片的适应参数:
public class CustomAdaptFragment extends Fragment implements CustomAdapt { @Override public boolean isBaseOnWidth() { return false; } @Override public float getSizeInDp() { return 667; } } -
取消片段的改编:
public class CancelAdaptFragment extends Fragment implements CancelAdapt {
}
### 子单位(参见 demo-subunits)
* 你可以选择三个不常用的单位 **pt, in, mm** 之一作为子单位,子单位用于避免修改 **DisplayMetrics#density** 所带来的不良影响,使用子单位后,你可以在设计上直接写像素尺寸,无需将其转换为 **dp**
```java
AutoSizeConfig.getInstance().getUnitsManager()
.setSupportDP(false)
.setSupportSP(false)
.setSupportSubunits(Subunits.MM);
关于我
- 电子邮件: jess.yan.effort@gmail.com
- 主页: http://jessyan.me
- 掘金: https://juejin.im/user/57a9dbd9165abd0061714613
- 简书: https://www.jianshu.com/u/1d0c0bc634db
许可
Copyright 2018, jessyan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.本站来源与版权声明
- 本文标题:AndroidAutoSize - 🔥 A low-cost Android scree
- 本文链接:https://cn121.com/mobile/jessyancoding-androidautosize.html
- 原项目:JessYanCoding/AndroidAutoSize 版权归原作者 JessYanCoding 及贡献者所有
- 收录信息:本站于 2026-10-20 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 JessYanCoding/AndroidAutoSize。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。