1、界面搭建过程中各种大小单位
创新互联建站是由多位在大型网络公司、广告设计公司的优秀设计人员和策划人员组成的一个具有丰富经验的团队,其中包括网站策划、网页美工、网站程序员、网页设计师、平面广告设计师、网络营销人员及形象策划。承接:成都网站制作、成都网站建设、外贸营销网站建设、网站改版、网页设计制作、网站建设与维护、网络推广、数据库开发,以高性价比制作企业网站、行业门户平台等全方位的服务。
Android:通常采用dp设置View宽高(和px像素的换算关系是dp值 × density逻辑密度),sp设置字体大小(会随着系统字体设置的大小而改变)。
Flutter:没有具体的大小单位描述, 和尺寸相关的MediaQueryData类中较为重要的几个值如下:
(一)devicePixelRatio(设备像素比),对应Android中的density
(二)size.width和height,设备的逻辑像素宽高,并非绝对物理像素(例如iphone6的设备像素比是2,通过size获取到的逻辑像素宽高为375 × 667,实际物理像素则为750 × 1334,即分辨率)
(三)textScaleFactor:单位逻辑像素字体像素数,默认为1,设置成1.5则字体变大50%,如果想让Text组件的字体大小不随系统设置的变化而变化,需将这个值设定成固定值1
UI适配解决方案:
1、采用ScreenUtil插件,初始化时候传入设计稿大小,当发现一屏显示的大小有差异时候采用插件提供的setWidth和setHeight来设置具体的宽高(会根据设计稿大小和实际设备逻辑像素宽高比进行缩放)。
2、TextButton、Text等按钮和文本组件,通过设置字体大小和内边距来控制整体的宽高,而非固定其宽高。
2、本地资源文件的引用方式
Android:图片通常存放在res/mipmap或res/drawable下,不同分辨率对应不同后缀名,如mipmap-hdpi、mipmap-xhdpi
Flutter:需在pubspec.yaml中配置,如下图所示
如果只配置父级目录例如(assets/images/common_status)则无法再存放不同尺寸的图片。不同尺寸的图片需建立对应的2.0x、3.0x目录后存放,设备在读取时候会自行根据分辨率去找对应的图片,弊端是每有一张图片就需在pubspec.yaml文件中声明这些图片
在某些业务上,可能我们需要计算多段文字的高度,达到动态适配ListView高度的目的,满足我们产品的优(bian)秀(tai)需求。在android原生层大家都知道有各种手段可以计算文字的宽、高等,例如paint.layout等等手段。但在flutter中,虽然并没有直接提供API供开发者使用,但和android原生一样,只有看下RichText的源码就可以发现其中奥妙。
这里很感谢[zhouxiaofu]为我指出文字高度计算提到错误地方,详细看评论。
在用Flutter 开发windows和linux跨平台应用的时候,如何设置默认窗口大小呢?
flutter没有提供统一的api,所以默认的窗口大小是1280x720.
如果我们想要改成自己想要的默认窗口大小呢?比如我想要设置为:512像素宽, 926像素高
我该怎么做呢?
请看我的教程。
首先你确保你已经为项目创建了windows和Linux的支持。
目前Flutter 为windows和linux提供的是托管式运行的主程序,可以理解为一个壳子,这个壳子就是用cpp写的,平台原生的window 窗口。
所以我们可以打开相应的cpp源代码,设置默认窗口大小。
这里先讲windows和linux,因为mac 平台跟windows和linux不一样,后面单独给大家讲解。
我们看图。
源代码路径位于:
windows/runner/main.cpp
找到
第一个参数是宽度,单位是px,第二个是高度,单位是px
修改后重新运行生效。
源代码路径位于:
linux/my_application.cc
找到
方法的第一个数字是宽度,第二个是高度,单位也是px像素。
修改后,重新运行生效。
现在,你已经学会了如何设置初始窗口大小了。