欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

对flutter屏幕适配的一点思考

发表日期:2018-12 文章编辑:小灯 浏览次数:2272

源码地址

在进行flutter的布局之中,有这么几个比较重要的概念:

Logical pixels : 这个是实际布局中所用到的概念,类似于android中的dp

physical pixels(device pixels) : 指的就是物理设备中的像素点

devicePixelRatio : 指的是一个Logical pixels所对应的physical pixels的数量,实际上就是类似于android中的density

flutter提供了非常强大的Layout widgets,实际上配合这些Layout Widget,用Logical pixels这个概念是可以做到在不同分辨率,不同像素密度的屏幕上进行拉伸与缩放而不至于有太大的变形,但这样做势必会增加我们适配的难度。

因为flutter对屏幕适配的概念与android的屏幕适配相似,所以可以将android平台上的屏幕适配的相关经验移到flutter平台上。

实际上如果不考虑Logical pixels而只考虑physical pixels,,可以引申出一种拉伸适配的概念,对于一个指定的ui设计稿,可以采取以下这种方式:

designW : 设计稿的宽

designH : 设计稿的高

deviceW : 设备的宽

deviceH : 设备的高

如果我们以宽进行适配,也就说将设计稿的宽拉伸或者缩小到设备的宽,那么可以以如下的公式进行转换:

dw : 设计稿中某个控件的位置

vw : 最终在实际的设备中的位置

    \frac{deviceW}{designW}=\frac{vw}{dw}

    vw = dw * \frac{deviceW}{designW} = vw * x 其中x=\frac{deviceW}{designW}

如果我们以高进行适配,也就是说将设计稿的高拉伸或缩小到设备的高,那么与宽拉伸相似:

    \frac{deviceH}{designH}=\frac{vw}{dw}

    vw = dw * \frac{deviceH}{designH} = vw * x 其中x=\frac{deviceH}{designH}

比如说分辨率为1080x1920的ui稿,要适配到1440x2560的屏幕上,可以这样做:

宽适配:

    x = \frac{deviceW}{designW} = \frac{1440}{1080} = 1.333333333333333

    vx = vw * x

高适配:

    x = \frac{deviceH}{designH} = \frac{2560}{1920} = 1.333333333333333

    vx = vw * x

经过这样的计算,可以将设计稿完美的拉伸到任意设备的屏幕上去,但是有一点需要注意,如果目标设备的屏幕的宽高比与设计稿的宽高比不一致,那么会导致如下两种情况:

 1.如果是宽适配,那么如果目标设备的宽高比小于设计稿的宽高比(也就是说目标设备的屏幕比设计稿长,例如现在的全面屏或刘海屏)那么就会导致有一个部分留白,如果目标设备的宽高比大于大于设计稿的宽高比(例如iphone4这样的屏幕)那么就会导致导致当前的屏幕无法完全显示设计稿的内容,这两种情况就需要在设计界面的时候充分的考虑到,提前做好处理

 2.高适配和宽适配是一样的,只不过是会产生横向的留白或者无法完全显示

适配后的图片如下:
设计稿 : 宽 1080 高 1920 480dpi
不同设备对应如下 :
pixel | 宽 : 1080 高 1920 480dpi

pixel_1080_1920_3.png
nexus 6p | 宽 : 1440 高 2560 560dpi

nexus_6p_1440_2560_3.5.png

iphone x | 宽 : 1125 高 2436 458ppi


iphone_x_1125_2436_3.png

可以看到,对于不同的屏幕,都是能够做到与设计稿一致的。


本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:https://dengtar.com/17580.html
上一篇:Flutter 国际化 下一篇:Flutter 状态管理
相关APP开发
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.