一种非常简单的Android屏幕适配方案

本文介绍了一种简单、低成本的Android屏幕适配方法,基于今日头条技术团队的思路进行优化,解决了高度适配的问题。作者通过测试发现,以高度作为适配基准时存在比例差异,通过调整targetDensity的计算方法,修复了这个问题。最终方案允许开发者自由切换适配基准方向,只需一个dimens文件和一个layout文件即可实现全屏适配。
摘要由CSDN通过智能技术生成

转载请作明出处:https://blog.csdn.net/Raul575_Li/article/details/80801312
##前言
作为一个Android开发人员,你还在为了适配各种尺寸的屏幕而苦恼吗?你还在为了出现一个新的机型而修改着数不尽的dimens和layout吗?你还在为了UI给的奇葩尺寸的设计图而绞尽奶汁计算距离吗?如果你为了这些事情而苦恼,那么看完这篇文章,希望可以帮你减少开发时间,减缓生命的流逝速度。。。

不知道大家有没有看过前一段时间今日头条技术团队发表的一篇关于Android屏幕适配的文章:一种极低成本的Android屏幕适配方式。没有看过的朋友可以先看看了解一下再回来,可以更好的理解。我是无意中点开的这篇文章,但是看过之后眼前一亮-------Android屏幕适配要是真的这么简单,那些辛辛苦苦没日没夜做适配的前辈们是不是死得太惨了。。。。。。。

不比比太多,开搞!
##测试与思考
不得不说今日头条的大神们的想法真的非常独到,成本极其低廉,还特别好用。他们给出的最终方案是这样的:

private static float sRoncompatDennsity;
private static float sRoncompatScaledDensity;

private void setCustomDensity(@NonNull Activity activity, final @NonNull Application application) {

	//application
	final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();
	if (sRoncompatDennsity == 0) {
	    sRoncompatDennsity = appDisplayMetrics.density;
	    sRoncompatScaledDensity = appDisplayMetrics.scaledDensity;
	    application.registerComponentCallbacks(new ComponentCallbacks() {
	        Override
	        public void onConfigurationChanged(Configuration newConfig) {
			    if (newConfig != null && newConfig.fontScale > 0) {
			        sRoncompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
                }
            }
            
	        @Override
	        public void onLowMemory() {

	        }
	    });
	}
	
	//计算宽为360dp 同理可以设置高为640dp的根据实际情况
	final float targetDensity = appDisplayMetrics.widthPixels / 360;
	final float targe
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值