[Android]今日头条的屏幕适配方案,简单又粗暴!

AndroidAutoSize实战教程:今日头条屏幕适配方案详解 通过 AndroidAutoSize 库来实现屏幕适配,确保在不同的屏幕尺寸、分辨率、密度下,应用界面和广告(如果涉及)能正常显示,特别是在字体、布局、图标等方面的适配。今日头条的屏幕适配方案,如果项目需求不涉及横竖屏切换,且不需要做平板适配,AndroidAutoSize 方案有一定的适用性,尤其是在应对多种屏幕尺寸和密度的情况下。AutoSize 会自动处理不同屏幕密度的适配,确保你的应用在 hdpi、mdpi、xhdpi 等不同的屏幕密度下能够正常显示。单位,这样可以确保字体在不同设备上适配。 阅读详情

骚年你的屏幕适配方式该升级了!-今日头条适配方案

JessYan 鸿洋 前天

本文作者

 

作者:JessYan

链接:

https://juejin.im/post/5b7a29736fb9a019d53e7ee2

本文由作者授权发布。

 

1

前言

 

这个月在 Android 技术圈中 屏幕适配 这个词曝光率挺高的,为什么这么说呢?因为这个月陆续有多个大佬发布了屏幕适配相关的文章,公布了自己认可的屏幕适配方案

上上个星期 Blankj 老师发表了一篇力挺今日头条屏幕适配方案的 文章 https://juejin.im/post/5b6250bee51d451918537021,提出了很多优化的方案,并开源了相关源码。

 

上个星期 拉丁吴 老师在 鸿神 的公众号上发布了一篇 文章,详细描述了市面上主流的几种屏幕适配方案,并发布了他的 smallestWidth 限定符适配方案和相关源码 (其实早就发布了),文章写的很好,建议大家去看看。

 

其实大家最关注的不是市面上有多少种屏幕适配方案,而是自己的项目该选择哪种屏幕适配方案,可以看出两位老师最终选择的屏幕适配方案都是不同的。

 

我下面就来分析分析,我作为一个才接触这两个屏幕适配方案的吃瓜群众,我是怎么来验证这两种屏幕适配方案是否可行,以及怎样根据它们的优缺点来选择一个最适合自己项目的屏幕适配方案。

 

这是我推荐给大家的屏幕适配框架,本来想放到最后作为福利的,害怕大家看不到,所以就将链接放到这里,提前送给大家

 

Github : 

https://github.com/JessYanCoding/AndroidAutoSize 

您的 Star 是我坚持的动力 ✊

 

2

浅谈适配方案

 

在 拉丁吴 老师的文章中谈到了两个比较经典的屏幕适配方案,在我印象中十分深刻,我想大多数兄弟都用过,在我的开发生涯里也是有很长一段时间都在用这两种屏幕适配方案。

 

第一种就是宽高限定符适配,什么是宽高限定符适配呢

 

├── src/main
│   ├── res
│   ├── ├──values
│   ├── ├──values-800x480
│   ├── ├──values-860x540
│   ├── ├──values-1024x600
│   ├── ├──values-1024x768
│   ├── ├──...
│   ├── ├──values-2560x1440

 

就是这种,在资源文件下生成不同分辨率的资源文件,然后在布局文件中引用对应的 dimens,大家一定还有印象.

 

第二种就是 鸿洋 的 AndroidAutoLayout

 

这两种方案都已经逐渐退出了历史的舞台,为什么想必大家都知道,不知道的建议看看 拉丁吴 老师的文章,所以这两种方案我在文章中就不在阐述了。

 

主要讲讲现在最主流的两种屏幕适配方案,今日头条适配方案 和 smallestWidth 限定符适配方案

 

建议大家不清楚这两个方案的先看看这两篇文章,才清楚我在讲什么,后面我要讲解它们的原理,以及验证这两种方案是否真的可行,最后对他们进行深入对比,对于他们的一些缺点给予对应的解决方案,绝对干货。

 

3

今日头条屏幕适配方案

 

原理

 

上面已经告知,不了解这两个方案的先看看上面的两篇文章,所以这里我就假设大家已经看了上面的文章或者之前就了解过这两个方案,所以在本文中我就不再阐述 DPI、Density 以及一些比较基础的知识点,上面的文章已经阐述的够清楚了。

 

今日头条屏幕适配方案的核心原理在于,根据以下公式算出 density

当前设备屏幕总宽度(单位为像素)/  设计图总宽度(单位为 dp) = density

density 的意思就是 1 dp 占当前设备多少像素。

 

为什么要算出 density,这和屏幕适配有什么关系呢?

 

public static float applyDimension(int unit, float value,
                                       DisplayMetrics metrics)
    {
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }

 

大家都知道,不管你在布局文件中填写的是什么单位,最后都会被转化为 px,系统就是通过上面的方法,将你在项目中任何地方填写的单位都转换为 px 的。

 

所以我们常用的 px 转 dp 的公式 dp = px / density,就是根据上面的方法得来的,density 在公式的运算中扮演着至关重要的一步。

 

要看懂下面的内容,还得明白,今日头条的适配方式,今日头条适配方案默认项目中只能以高或宽中的一个作为基准,进行适配,为什么不像 AndroidAutoLayout 一样,高以高为基准,宽以宽为基准,同时进行适配呢。

 

这就引出了一个现在比较棘手的问题,大部分市面上的 Android 设备的屏幕高宽比都不一致,特别是现在大量全面屏的问世,这个问题更加严重,不同厂商推出的全面屏手机的屏幕高宽比都可能不一致。

 

这时我们只以高或宽其中的一个作为基准进行适配,就会有效的避免布局在高宽比不一致的屏幕上出现变形的问题。

 

明白这个后,我再来说说 density,density 在每个设备上都是固定的,DPI / 160 = density,屏幕的总 px 宽度 / density = 屏幕的总 dp 宽度

 

  • 设备 1,屏幕宽度为 1080px,480DPI,屏幕总 dp 宽度为 1080 / (480 / 160) = 360dp

  • 设备 2,屏幕宽度为 1440,560DPI,屏幕总 dp 宽度为 1440 / (560 / 160) = 411dp

 

可以看到屏幕的总 dp 宽度在不同的设备上是会变化的,但是我们在布局中填写的 dp 值却是固定不变的。

 

这会导致什么呢?假设我们布局中有一个 View 的宽度为 100dp,在设备 1 中 该 View 的宽度占整个屏幕宽度的 27.8% (100 / 360 = 0.278)、

 

但在设备 2 中该 View 的宽度就只能占整个屏幕宽度的 24.3% (100 / 411 = 0.243。

 

可以看到这个 View 在像素越高的屏幕上,dp 值虽然没变,但是与屏幕的实际比例却发生了较大的变化,所以肉眼的观看效果,会越来越小,这就导致了传统的填写 dp 的屏幕适配方式产生了较大的误差。

 

这时我们要想完美适配,那就必须保证这个 View 在任何分辨率的屏幕上,与屏幕的比例都是相同的。

 

这时我们该怎么做呢?改变每个 View 的 dp 值?不现实,在每个设备上都要通过代码动态计算 View 的 dp 值,工作量太大。

 

如果每个 View 的 dp 值是固定不变的,那我们只要保证每个设备的屏幕总 dp 宽度不变,就能保证每个 View 在所有分辨率的屏幕上与屏幕的比例都保持不变,从而完成等比例适配,并且这个屏幕总 dp 宽度如果还能保证和设计图的宽度一致的话,那我们在布局时就可以直接按照设计图上的尺寸填写 dp 值。

 

屏幕的总 px 宽度 / density = 屏幕的总 dp 宽度

 

在这个公式中我们要保证 屏幕的总 dp 宽度 和 设计图总宽度 一致,并且在所有分辨率的屏幕上都保持不变,我们需要怎么做呢?屏幕的总 px 宽度 每个设备都不一致,这个值是肯定会变化的,这时今日头条的公式就派上用场了。

 

当前设备屏幕总宽度(单位为像素)/  设计图总宽度(单位为 dp) = density

 

这个公式就是把上面公式中的 屏幕的总 dp 宽度 换成 设计图总宽度,原理都是一样的,只要 density 根据不同的设备进行实时计算并作出改变,就能保证 设计图总宽度 不变,也就完成了适配。

 

验证方案可行性

 

上面已经把原理分析的很清楚了,很多文章只是一笔带过这个公式,公式虽然很简单但我们还是想晓得这是怎么来的,所以我就反向推理了一遍,如果还是看不懂,那我只能说我尽力了,原理讲完了,那我们再来现场验证一下这个方案是否可行?

 

假设设计图总宽度为 375 dp,一个 View 在这个设计图上的尺寸是 50dp * 50dp,这个 View 的宽度占整个设计图宽度的 13.3% (50 / 375 = 0.133),那我们就来验证下在使用今日头条屏幕适配方案的情况下,这个 View 与屏幕宽度的比例在分辨率不同的设备上是否还能保持和设计图中的比例一致。

 

验证设备 1

 

屏幕总宽度为 1080 px,根据今日头条的的公式求出 density,1080 / 375 = 2.88 (density)。

 

这个 50dp * 50dp 的 View,系统最后会将高宽都换算成 px,50dp * 2.88 = 144 px (根据公式 dp * density = px)。

 

144 / 1080 = 0.133,View 实际宽度与 屏幕总宽度 的比例和 View 在设计图中的比例一致 (50 / 375 = 0.133),所以完成了等比例缩放。

 

某些设备总宽度为 1080 px,但是 DPI 可能不同,是否会对今日头条适配方案产生影响?其实这个方案根本没有根据 DPI 求出 density,是根据自己的公式求出的 density,所以这对今日头条的方案没有影响。

 

上面只能确定在所有屏幕总宽度为 1080 px 的设备上能完成等比例适配,那我们再来试试其他分辨率的设备。

 

验证设备 2

 

屏幕总宽度为 1440 px,根据今日头条的的公式求出 density,1440 / 375 = 3.84 (density)。

 

这个 50dp * 50dp 的 View,系统最后会将高宽都换算成 px,50dp * 3.84 = 192 px (根据公式 dp * density = px)。

 

192 / 1440 = 0.133,View 实际宽度与 屏幕总宽度 的比例和 View 在设计图中的比例一致 (50 / 375 = 0.133),所以也完成了等比例缩放。

 

两个不同分辨率的设备都完成了等比例缩放,证明今日头条屏幕适配方案在不同分辨率的设备上都是有效的,如果大家还心存疑虑,可以再试试其他分辨率的设备,其实到最后得出的比例不会有任何偏差, 都是 0.133。

 

优点

 

  1. 使用成本非常低,操作非常简单,使用该方案后在页面布局时不需要额外的代码和操作,这点可以说完虐其他屏幕适配方案

  2. 侵入性非常低,该方案和项目完全解耦,在项目布局时不会依赖哪怕一行该方案的代码,而且使用的还是 Android 官方的 API,意味着当你遇到什么问题无法解决,想切换为其他屏幕适配方案时,基本不需要更改之前的代码,整个切换过程几乎在瞬间完成,会少很多麻烦,节约很多时间,试错成本接近于 0

  3. 可适配三方库的控件和系统的控件(不止是是 Activity 和 Fragment,Dialog、Toast 等所有系统控件都可以适配),由于修改的 density 在整个项目中是全局的,所以只要一次修改,项目中的所有地方都会受益

  4. 不会有任何性能的损耗

 

缺点

 

暂时没发现其他什么很明显的缺点,已知的缺点有一个,那就是第三个优点,它既是这个方案的优点也同样是缺点,但是就这一个缺点也是非常致命的。

 

只需要修改一次 density,项目中的所有地方都会自动适配,这个看似解放了双手,减少了很多操作,但是实际上反应了一个缺点,那就是只能一刀切的将整个项目进行适配,但适配范围是不可控的。

 

这样不是很好吗?这样本来是很好的,但是应用到这个方案是就不好了,因为我上面的原理也分析了,这个方案依赖于设计图尺寸,但是项目中的系统控件、三方库控件、等非我们项目自身设计的控件,它们的设计图尺寸并不会和我们项目自身的设计图尺寸一样。

 

当这个适配方案不分类型,将所有控件都强行使用我们项目自身的设计图尺寸进行适配时,这时就会出现问题,当某个系统控件或三方库控件的设计图尺寸和和我们项目自身的设计图尺寸差距非常大时,这个问题就越严重。

 

举个栗子

 

假设一个三方库的 View,作者在设计时,把它设计为 100dp * 100dp,设计图的最大宽度为 1000dp,这个 View 在设计图中的比例是 100 / 1000 = 0.1,意思是这个 View 的宽度在设计图中占整个宽度的 10%,如果我们要完成等比例适配,那这个三方库 View 在所有的设备上与屏幕的总宽度的比例,都必须保持在 10%。

 

这时在一个使用今日头条屏幕适配方案的项目上,设置的设计图最大宽度如果是 1000dp,那这个三方库 View,与项目自身都可以完美的适配,但当我们项目自身的设计图最大宽度不是 1000dp,是 500dp 时,100 / 500 = 0.2,可以看到,比例发生了较大的变化,从 10% 上升为 20%,明显这个三方库 View 高于作者的预期,比之前更大了。

 

这就是两个设计图尺寸不一致导致的非常严重的问题,当两个设计图尺寸差距越大,那适配的效果也就天差万别了。

 

解决方案

 

方案 1

 

调整设计图尺寸,因为三方库可能是远程依赖的,无法修改源码,也就无法让三方库来适应我们项目的设计图尺寸,所以只有我们自身作出修改,去适应三方库的设计图尺寸,我们将项目自身的设计图尺寸修改为这个三方库的设计图尺寸,就能完成项目自身和三方库的适配。

 

这时项目的设计图尺寸修改了,所以项目布局文件中的 dp 值,也应该按照修改的设计图尺寸,按比例增减,保持与之前设计图中的比例不变。

 

但是如果为了适配一个三方库修改整个项目的设计图尺寸,是非常不值得的,所以这个方案支持以 Activity 为单位修改设计图尺寸,相当于每个 Activity 都可以自定义设计图尺寸,因为有些 Activity 不会使用三方库 View,也就不需要自定义尺寸,所以每个 Activity 都有控制权的话,这也是最灵活的。

 

但这也有个问题,当一个 Activity 使用了多个设计图尺寸不一样的三方库 View,就会同样出现上面的问题,这也就只有把设计图改为与几个三方库比较折中的尺寸,才能勉强缓解这个问题。

 

方案 2

 

第二个方案是最简单的,也是按 Activity 为单位,取消当前 Activity 的适配效果,改用其他的适配方案。

 

4

使用中的问题

 

有些文章中提到了今日头条屏幕适配方案可以将设计图尺寸填写成以 px 为单位的宽度和高度,这样我们在布局文件中,也就能直接填写设计图上标注的 px 值,省掉了将 px 换算为 dp 的时间 (大部分公司的设计图都只标注 px 值),而且照样能完美适配

但是我建议大家千万不要这样做,还是老老实实的以 dp 为单位填写 dp 值,为什么呢?

 

直接填写 px 虽然刚开始布局的时候很爽,但是这个坑就已经埋上了,会让你后面很爽,有哪些坑?

 

第一个坑

 

这样无疑于使项目强耦合于这个方案,当你遇到无法解决的问题想切换为其他屏幕适配方案的时候,layout 文件里曾经填写的 px 值都会作为 dp。

 

比如你的设计图实际宽度为 1080px,你不换算为 360dp (1080 / 3 = 360),却直接将 1080px 作为这个方案的设计图尺寸,那你在 layout 文件中,填写的也都是设计图上标注的 px 值,但是单位却是 dp。

 

一个在设计图上 300px * 300px 的 View,你可以直接在 layout 文件中填写为 300dp,而由于这个方案可以动态改变 density 的原因还是可以做到等比例适配,非常爽!

但你不要忘了,这样你就强耦合于这个方案了,因为当你不使用这个方案时,density 是不可变的!

 

举个栗子

 

使用这个方案时,在屏幕宽度为 1080px 的设备上,将设计图宽度直接填写为 1080,根据今日头条公式。

 

当前设备屏幕总宽度 /  设计图总宽度 = density

 

这时得出 density 为 1 (1080 / 1080 = 1),所以你在 layout 文件中你填写的 300dp 最后转换为 px 也是 300px (300dp * 1 = 300px 根据公式 dp * density = px)。

 

在这个方案的帮助下非常完美,和设计图一模一样完成了适配。

 

但当你不使用这个方案时,density 的换算公式就变为官方的 DPI / 160 = density, 在这个屏幕宽度为 1080px,480dpi 的设备上,density 就固定为 3 (480 / 160 = 3)。

 

这时再来看看你之前在 layout 文件中填写的 dp,换算成 px 为 900 px (300dp * 3 = 900px 根据公式 dp * density = px)。

 

原本在在设计图上为 300px 的 View,这时却达到了惊人的 900px,3倍的差距,恭喜你,你已经强耦合于这个方案了,你要不所有 layout 文件都改一遍,要不继续使用这个方案。

 

第二个坑

 

第二个坑其实就是刚刚在上面说的今日头条适配方案的缺点,当某个系统控件或三方库控件的设计图尺寸和和我们项目自身的设计图尺寸差距非常大时,这个问题就越严重。

 

你如果直接填写以 px 为设计图的尺寸,这不用想,肯定和所有的三方库以及系统控件的设计图尺寸都不一样,而且差距都非常之大,至少两三倍的差距,这时你在当前页面弹个 Toast 就可以明显看到,比之前小很多,可以说是天差万别,用其他三方库 View,也是一样的,会小很多。

 

因为你以 px 为单位填写设计图尺寸,人家却用的 dp,差距能不大吗,你如果老老实实用 dp,哪怕三方库的设计图尺寸和你项目自身的设计图尺寸不一样,那也差距不大,小到一定程度,基本都不用调整,可以忽略不计,而且很多三方库的设计图尺寸其实也都是那几个大众尺寸,很大可能和你项目自身的设计图尺寸一样。

 

5

总结

 

可以看到我讲的非常详细,可以说比今日头条官方以及任何博客写的都清楚,从原理到优缺点再到解决方案一应俱全,因为篇幅有限,如果我还想把 smallestWidth 限定符适配方案写的这么详细,那估计这篇文章得有一万字了。

 

所以我把这次的屏幕适配文章归位一个系列,一共分为三篇,第一篇详细的讲 今日头条屏幕适配方案,第二篇详细的讲 smallestWidth 限定符适配方案,第三篇详细讲两个方案的深入对比以及如何选择,并发布我根据 今日头条屏幕适配方案 优化的屏幕适配框架 AndroidAutoSize:

 

https://github.com/JessYanCoding/AndroidAutoSize

 

今日头条屏幕适配方案 官方公布的核心源码只有 30 行不到,但我这个框架的源码有 1500 行以上,在保留原有特性的情况下增加了不少功能和特性,功能增加了不少,但是使用上却变简单了。

 

<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>

 

只要这一步填写了设计图的高宽以 dp 为单位,你什么都不做,框架就开始适配了

大家可以提前看看我是怎么封装和优化的,我后面的第三篇文章会给出这个框架的原理分析,敬请期待。

 


最后欢迎各位android爱好者加群交流:290611780

 

 

今日头条发布最终版本的屏幕适配方案!——适用于Android移动应用开发平台 不同设备的屏幕尺寸、分辨率和屏幕比例的差异,给开发人员带来了挑战。通过使用今日头条最终版本的屏幕适配方案,开发者可以更轻松地实现Android平台上的屏幕适配,提升应用在不同设备上的用户体验。除了上述基本的屏幕适配原则和示例代码,今日头条的屏幕适配方案还提供了更多的功能和工具,帮助开发者更好地实现屏幕适配。屏幕比例适配:不同设备的屏幕比例(宽高比)也可能不同,开发者需要考虑应用在不同比例下的布局效果。通过使用上述代码,开发者可以根据屏幕的宽度和高度动态调整元素的大小和位置,以适应不同设备的屏幕。 阅读详情

相关推荐

今日头条屏幕适配最佳实践

在移动应用开发中,屏幕适配是确保应用在不同设备上用户体验一致性的关键步骤。首先,我们必须理解屏幕密度的概念。屏幕密度通常以每英寸点数(DPI)来衡量,表示屏幕上像素点的密度。高密度屏幕拥有更多的像素点,能够展示更清晰的图像。相对地,低密度屏幕则像素点较少,图像显示可能不如高密度屏幕细腻。为了在不同密度的屏幕上保持一致的视觉效果,开发中常使用密度无关像素(dp)作为单位。1dp在不同密度屏幕上代表相同的物理尺寸,从而帮助设计师和开发者创建出视觉上一致的用户界面。

weixin_32098457的博客 1263

Android 今日头条屏幕适配详细使用攻略

今日头条屏幕适配的核心代码为基础进行了扩展封装,产生了《AndroidAutoSize》这个能快速接入使用的屏幕适配方案,这个屏幕适配方案是我遇到的截止2020.9.15为止最强大、简单有效的屏幕适配方案。...

luo_boke的博客 2万+

在Ultralytics YOLO中添加/更换模块详细指南

使用参数继承 my_module_args: &my_args [64, 3, 0.5] # 定义参数模板 backbone: - [-1, 1, MyModule, *my_args] # 引用参数。

MR_Colorful的博客 2583

今日头条屏幕适配方案

作者:JessYan 链接:https://juejin.im/post/5b7a29736fb9a019d53e7ee2 原理 上面已经告知,不了解这两个方案的先看看上面的两篇文章,所以这里我就假设大家已经看了上面的文章或者之前就了解过这两个方案,所以在本文中我就不再阐述 DPI、Density 以及一些比较基础的知识点,上面的文章已经阐述的够清楚了。 今日头条屏幕适配方案的核心原理在于,根据以下公式算出 density 当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位...

qq_36652595的博客 2188

保姆级教程:在ROS2 Humble上搞定Livox Mid-360雷达,从IP配置到Rviz点云显示

本文提供在ROS2 Humble上配置Livox Mid-360激光雷达的完整教程,涵盖从IP设置到Rviz点云显示的全流程。详细解析硬件连接、驱动编译、配置文件优化及常见问题排查,帮助开发者快速搭建开发环境并实现高效点云可视化。

weixin_30955617的博客 183

金证股份软件测试笔试题面试题

boss上这家公司的HR找到了我,我看了一下这家公司的业务,是我以前做过的基金与证券。还是很感兴趣的,决定去面试看看情况。 (因为只是想去涨面试经验,没有想拿offer,一些回答有点不太对,为后面木有offer埋下伏笔。其实有点亏,毕竟走路过去,而且还花了3个小时) 地点在金证股份科技大楼8楼。 2月25号 主要分为笔试题和面试。 1、笔试题 进来的时候直接给我一份笔试题做,做了一个半小时吧。 分为3道选择题和1道SQL查询题、1道案例设计题 选择题都是考察SQL函数,可能日常生活中没有见过

全村的希望的博客 4451

今日头条适配方案原理解析

首先理解几个名词 px:像素密度:例如19201080,就是手机长度上1920个像素,而在宽度上有1080个像素 dp:其实dp就是为了使得开发者设置的长度能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。比如:我将一个控件设置长度为1dp,那么在160dpi上该控件长度为1px,在240dpi的屏幕上该控件的长度为1240/160=1.5个像素点。也就是dp会随着不同屏幕而改变控件长度的像素数量。关于dp的官方叙述为当屏幕每英寸有160个像素时(也就是160dpi),dp与px等价的

m0_37777069的博客 1855

树莓派Bookworm系统避坑指南:3种方法解决pip install报错externally-managed-environment

本文详细解析树莓派Bookworm系统中pip install报错externally-managed-environment的成因,并提供三种实用解决方案:使用虚拟环境(venv)隔离项目依赖、通过pipx管理全局Python工具,以及理解风险后的系统安装方法。帮助开发者安全高效地管理Python环境,避免系统冲突。

android的专栏 763

Flutter屏幕适配,简单粗暴的全局适配方式

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84122016的博客 1267

拆解特斯拉Optimus的关节技术:谐波减速器在仿人机器人中的5个精妙设计

本文深度解析特斯拉Optimus仿人机器人关节中的谐波减速器技术,揭示其五大工程突破:微型化材料革命、两万分之一圈精度实现、碳纤维柔轮轻量化、智能运维系统及国产替代方案。重点探讨谐波减速器如何通过创新设计和先进材料实现精准传动,为仿人机器人提供高效可靠的关节动力解决方案。

omega的博客 1075

Unity开发微信小游戏,使用Addressables管理游戏资源(本地进行远程测试)

快速构建Unity微信小游戏 使用Addressables管理游戏资源 使用小皮助手在本地进行远程资源加载测试

the_vnas的博客 6390

Flutter屏幕适配,简单粗暴的全局适配方式(2)

还记得Android原生上今日头条适配方案吗?就是修改运行时获取的设备屏幕密度比率常数。这个方案很早之前就有人提出过只是人微言轻传播的不好。对于用户来说屏幕就是一个矩形(至少目前的主流设备);而主流移动设备已经培养多年用户上下滑动屏幕的习惯;主流设备变得更“窄”;基于以上三点,以屏幕宽度适配通用性高,实现效果好。至于实际设备高/宽与设计比例的差异处理,自行留白或纵向改为scrollWidget点赞加星小礼物 复制粘贴人人爱 如有BUG记小本 携尔长刀来相砍已上传pub.dev ️❤️❤️点赞😘😘已上传

2401_84415451的博客 616

ICESat-2数据下载的两种方法

ICESat-2数据下载

weixin_46341898的博客 2899

android暴力屏幕适配,Flutter屏幕适配,简单粗暴的全局适配方式

screen_ratio_adapter????????一个Flutter package ,屏幕适配器,入侵成本极低。基于宽度方向适应,高度滚动或留空。并不是一个screen_util。再也不为适配屏幕重复搬砖。设计稿如同模特上挂着的衣服,但是强行穿在不同设备上,就成了买家秀,要么左右不对称,甚至撑破。基于一种理念一套多售,这是批量订制而不是私人定制。服装设计稿——>加工厂批量生产不同尺码——>...

weixin_30320587的博客 520

告别偏色!手把手教你用i1Profiler 3.5为喷墨打印机制作专属ICC曲线(附D50/D65光源选择指南)

本文详细介绍了如何使用i1Profiler 3.5为喷墨打印机制作专属ICC曲线,解决设备偏色问题。从色彩管理基础、软件配置到色块打印与测量实战技巧,逐步指导用户完成曲线制作,并提供了D50/D65光源选择指南,确保色彩还原精准。适合摄影师和设计师提升打印质量。

weixin_30613343的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android屏幕适配

关于屏幕适配,比较好的文章,大佬们总结得很好了,不自己动手写了。今日头条的方案最简单粗暴,低侵入 今日头条适配方案: https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA https://juejin.cn/post/6844903661819133960 smallestWidth限定符: https://www.jianshu.com/p/1302ad5a4b04 https://juejin.cn/post/6844903681524006925

194

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

屏幕适配 最火的3中方案

今日头条的屏幕适配方案,简单又粗暴https://blog.youkuaiyun.com/ZyClient/article/details/82011369 AndroidAutoLayout使用详解https://blog.youkuaiyun.com/osle123/article/details/52756036 今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案https://gith...

u013133387的专栏 118

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

屏幕适配方案

屏幕适配这个问题相信困扰着很多android开发者,现在安卓手机各种屏幕层出不穷,都需要我们来适配,我们今天先了解一下最基本的适配   为什么要做屏幕适配?   每个手机的宽高像素不会一样,每个控件我们如果给死值,那么在不同分辨率的手机上,他显示的宽高就是我们给的大小,但是根据屏幕的分辨率会进行缩放或扩放,这个时候就需要做屏幕适配了   我们先来了解一些概念 1、什么是px(分辨率)...

zyz18813049204的博客 180

让你的应用完美适配平板

其实标题有点吹牛逼了,谁也不敢说能完美适配平板,只能说尽力去做,包括显示和使用的各个方面尽力去做,才有可能在更多的平板设备上更加完美的运行起来,因为安卓的设备实在是太多了,之前手机在卷,现在平板也一样在卷。。。.........

Zhujiang 2302

ScreenMatch插件实战:Android屏幕适配与dimens资源生成全解析

在Android多机型开发中,屏幕适配始终是绕不开的工程难题。不同分辨率、不同屏幕比例的设备,让基于dp的布局在不同设备上表现不一。开发者常借助ConstraintLayout、百分比布局或第三方库来应对,但各有取舍。理解dp与px的换算原理,是掌握适配方案的基础。今日头条提出的按屏幕宽度等分设计思路,通过调整density基准,让布局比例在不同设备上保持一致,而ScreenMatch插件正是这一方案的资源生成工具。它基于基准dimens.xml,自动为多分辨率生成对应的资源文件,无需运行时反射,零性能损耗

weixin_32239523的博客 300
上一篇: Android 常见工具类封装
下一篇: BaseRecyclerViewAdapterHelper使用——RecyclerView万能适配器
ZyClient
博客等级 码龄10年 29粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值