今日头条的安卓适配方案,值得收藏
文章链接,之前确实没有接触过,我简单看了一遍,可以说,这也是相对比较完美的方案,我先简单说一下这个方案的思路,它是通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题。
比如,设计稿宽度是360px,那么开发这边就会把目标dp值设为360dp,在不同的设备中,动态修改density值,从而保证(手机像素宽度)px/density这个值始终是360dp,这样的话,就能保证UI在不同的设备上表现一致了。
这个方案侵入性很低,而且也没有涉及私有API,应该也是极不错的方案,我暂时也想不到强行修改density是否会有其他影响,既然有今日头条的大厂在用,稳定性应当是有保证的。
但是根据我的观察,这套方案对老项目是不太友好的,因为修改了系统的density值之后,整个布局的实际尺寸都会发生改变,如果想要在老项目文件中使用,恐怕整个布局文件中的尺寸都可能要重新按照设计稿修改一遍才行。因此,如果你是在维护或者改造老项目,使用这套方案就要三思了。
具体代码实现为:
// 今日头条的屏幕适配方案// 通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题// @param activity// @param applicationprivate static float sNoncompatDensity;private static float sNoncompatScaledDensity;public static void setCustomDensity(@NonNull Activity activity, @NonNull final Application application){DisplayMetrics appDisplayMetrics=application.getResources().getDisplayMetrics();if (sNoncompatDensity==0){sNoncompatDensity=appDisplayMetrics.density;sNoncompatScaledDensity=appDisplayMetrics.scaledDensity;application.registerComponentCallbacks(new ComponentCallbacks() {@Overridepublic void onConfigurationChanged(Configuration newConfig) {if (newConfig!=null&&newConfig.fontScale>0){sNoncompatScaledDensity=application.getResources().getDisplayMetrics().scaledDensity;}}@Overridepublic void onLowMemory() {}});}float targetDensity=appDisplayMetrics.widthPixels/360;float targetScaleDensity=targetDensity*(sNoncompatScaledDensity/sNoncompatDensity);int targetDensityDpi=(int)(160*targetDensity);appDisplayMetrics.density=targetDensity;appDisplayMetrics.scaledDensity=targetScaleDensity;appDisplayMetrics.densityDpi=targetDensityDpi;final DisplayMetrics activityDisplayMetrics=activity.getResources().getDisplayMetrics();activityDisplayMetrics.density=targetDensity;activityDisplayMetrics.scaledDensity=targetScaleDensity;activityDisplayMetrics.densityDpi=targetDensityDpi;}
今日头条的安卓适配方案,值得收藏相关推荐
- 今日头条适配方案_今日头条信息流广告创意优化方案!
今日头条信息流广告创意优化方案! 时段设置常见错误: 投放时段选取过窄导致展现量低, 优质时段出价无竞争力导致展现量低 时段设置方法: 依据广告主产品或服务目标受众在推广平台上的活跃时间来设定; 根据 ...
- 今日头条App 页面秒开方案详解
热文导读| 点击标题阅读 互联网寒冬下,程序员如何突围提升自己? Google发力了,Flutter突飙猛进,在鸿蒙OS的威胁下,FuchsiaOS API也发布了 全网第一篇整理的Flutter ...
- 今日头条Android适配方案,android 今日头条的屏幕适配理解
前一段时间无意中看到今日头条的适配方案,使用到项目中,感觉真的是无比丝滑.所以特意写一篇文章分享给小伙伴们! 本文知识点: 为什么要做屏幕适配 今日头条的适配方案(划重点) 今日头条的适配方案的一些问 ...
- 今日头条2018安卓实习笔试题
好多天前做的头条,今日补上博客. 第一题 题意 在n个元素的数组中,找到差值为k的数字对去重后的个数. 输入描述: 第一行包含两个正整数,n和k,n表示数字个数,k表示差值. 第二行,n个正整数 输出 ...
- Android 今日头条适配详解
这篇文章是在掘金上看到的,感觉不错.怕时间长了不好找,因此就转载过来,进行保存. 原文地址:https://juejin.cn/post/6844903661819133960 原文作者:JessY ...
- 今日头条android自适应,今日头条解决适配(Android)
工具类如下: /** * @param activity * @param application * @param isLandscape 是否是横屏 */ public class ScreenU ...
- 今日头条启动很快,你觉得可能是做了哪些优化?
原文作者:蓝师傅_Android 原文地址:https://www.jianshu.com/p/d0fe74f4e9c4 相关阅读:深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的 ...
- 今日头条移动 APP 广告激活数据API对接实践
作为最火的新闻app,今日头条有这很大的活跃用户群和日访问量.大流量决定了今日头条会位商品做广告. 1.如下为今日头条的广告收费方案(来自官方开发文档): 激活数是 APP 广告主衡量转化效果的重要指 ...
- 面试官:今日头条启动很快,你觉得可能是做了哪些优化?
前言 网上关于启动优化的文章多不胜数,内容千篇一律,大都是列举一些耗时操作,采用异步加载.懒加载等. 而在面试过程中,关于启动优化的问题,如果只是很表面地回答耗时操作应该放在子线程,显然太过于普通,无 ...
最新文章
- aspose.cells 无法读取公式值_隐藏 Excel表格、公式的9种方法
- Pytorch中的广播机制
- Centos最小化装机网络问题
- BindingException: Parameter 'XXX' not found. Available parameters are [collection, list]
- 不同技术团队的配合问题及DevOps
- PyTorch | torch.tensor使用方法,如何使用torch.tensor
- 【转载】为什么要用黑莓?
- windows11下安装vivado2019
- android TextWatcher 学习
- Python计算股票收益率、Alpha和Beta系数
- matlab 四元方程求解,如何用Matlab求解如下一元四次方程,求指导
- 2022年最新软件测试面试题+答案解析(每日20题,持续更新中)【六】
- SpringCLoud+redis+es高并发项目《九》(Spring Security Oauth2 JWT)
- 电脑重复文件扫描工具清理:Easy duplicate finder 5.10注册破解版
- tomcat连接oracle报错,跪求解决在eclipse中开oracle数据库库TOMCAT报错
- php excel速度慢,window_win10双击打开excel太慢了的三种解决办法,win10双击打开excel文件慢该怎么 - phpStudy...
- 我为什么要离开传智再去创业?
- 真实的上海IT圈:张江男vs漕河泾男
- 案例-canvas绘制雨滴
- 【OpenHarmony】napi基本用法----HelloWorld