AndroidAutoSize 是一个极低成本的 Android 屏幕适配解决方案,基于业界先进的屏幕适配方案优化而来。该项目通过动态计算控件的实际像素大小,实现了在各种 Android 设备上的完美界面适配。
技术原理
AndroidAutoSize 基于 Android 的密度无关像素(dp)单位,通过动态调整全局比例因子来实现自适应。它采用类库自动注入的方式,无需更改现有代码逻辑即可启用适配功能。
核心功能在于提供了一个全局的比例因子,这个因子可以根据设备的屏幕密度和目标像素密度进行动态调整。项目支持 Java 与 Kotlin 两种语言,并且完全兼容 Android Studio 的 Gradle 插件。
快速开始
安装依赖
通过 JitPack 添加依赖:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
}
基本配置
在 AndroidManifest.xml 中配置全局设计图尺寸:
<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>
只需要这一步配置,框架就可以自动对项目中的所有页面进行适配。
高级功能
Activity 自定义适配
当某个 Activity 的设计图尺寸与全局设计图尺寸不同时,可以实现 CustomAdapt 接口:
public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {
@Override
public boolean isBaseOnWidth() {
return false;
}
@Override
public float getSizeInDp() {
return 667;
}
}
取消适配
如果某个 Activity 不需要适配,实现 CancelAdapt 接口即可:
public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {
}
Fragment 支持
首先开启 Fragment 支持:
AutoSizeConfig.getInstance().setCustomFragment(true);
然后为 Fragment 实现相应的适配接口。
副单位支持
为了避免修改 DisplayMetrics#density 对系统控件或第三方库的影响,可以使用副单位:
AutoSizeConfig.getInstance().getUnitsManager()
.setSupportDP(false)
.setSupportSP(false)
.setSupportSubunits(Subunits.MM);
使用副单位后,可以直接填写设计图上的像素尺寸,无需再进行单位转换。
适配效果展示
开发预览
在 Android Studio 中进行布局预览时,可以选择 panel 主题来隐藏状态栏和导航栏,获得更好的预览效果:
项目特点
- 极低成本:只需一步配置即可完成全局适配
- 高性能:编译时处理降低运行时计算开销
- 高度灵活:支持 Activity 和 Fragment 级别的自定义适配
- 兼容性好:支持 Android 4.0+ 系统
- 不影响现有代码:采用无侵入式设计
适用场景
- 新项目快速实现屏幕适配
- 老项目迁移和适配优化
- 需要支持多种屏幕尺寸和分辨率的应用
- 希望减少屏幕适配工作量的开发团队
AndroidAutoSize 是 Android 开发者的强大工具,能够有效解决多屏幕适配问题,提升开发效率,降低维护成本。无论您是新手还是经验丰富的开发者,都值得尝试将这个项目引入到您的下一个 Android 项目中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







