我得到了一个新应用程序的设计。所有尺寸都是Android可用的,并以DP -(* 密度无关像素 )给出。我如何将这些值转换为Flutter的LP( 逻辑像素 *)。我知道Window.devicePixelRatio为每个逻辑像素提供了设备像素数。DP和LP之间的确切区别是什么?是否有内置的方法将DP转换为LP?
Window.devicePixelRatio
n3ipq98p1#
根据文档(FlutterView.devicePixelRatio和Flutter for Android Developers),DP和LP之间没有真实的的区别。设备像素也称为物理像素。逻辑像素也称为设备无关或分辨率无关像素。Flutter没有dp,但有逻辑像素,基本上和设备无关像素一样,所谓device泛指elRatio表示的是单个逻辑像素中物理像素的比例。
FlutterView.devicePixelRatio
dp
vsmadaxz2#
根据https://api.flutter.dev/flutter/dart-ui/FlutterView/devicePixelRatio.html,物理显示器的每厘米大约有38个逻辑像素,或者每英寸大约有96个逻辑像素。根据https://developer.android.com/training/multiscreen/screendensities,One,dp是一个虚拟像素单位,大约等于中密度屏幕(160 dpi;“基线”密度)。所以我们可以说:160 dp == 1英寸== 96 lp
wnvonmuf3#
您可以使用下面的代码使您的移动的屏幕响应:
double getHeight(double screenHeightofthedeviceYouAreDebuging,BuildContextcontext,double size) { return (MediaQuery.of(context).size.height / screenHeight) * size; }
因此,如果您在屏幕中使用5进行调试,屏幕的高度将为640,或者MediaQuery.of(context).size.(width and height)将为您提供测试设备的屏幕大小screen Height of the device You Are Debuging = 640context = BuildContextsize = size you want to be as you image , container etc height。因此,它将根据所使用的设备转换屏幕大小
screen Height of the device You Are Debuging = 640
context = BuildContext
size = size you want to be as you image , container etc height
double getWidth(double screenWidthofthedeviceYouAreDebuging,BuildContext context,double size){ return (MediaQuery.of(context).size.width / screenHeight) * size; } EdgeInsets padding(top,bottom,left,right,context){ return EdgeInsets.only( top: getHeight(640, context, top), bottom: getHeight(640, context, bottom), left: getHeight(640, context, left), right: getHeight(640, context, right)); }
3条答案
按热度按时间n3ipq98p1#
根据文档(
FlutterView.devicePixelRatio
和Flutter for Android Developers),DP和LP之间没有真实的的区别。设备像素也称为物理像素。逻辑像素也称为设备无关或分辨率无关像素。
Flutter没有
dp
,但有逻辑像素,基本上和设备无关像素一样,所谓device泛指elRatio表示的是单个逻辑像素中物理像素的比例。vsmadaxz2#
根据https://api.flutter.dev/flutter/dart-ui/FlutterView/devicePixelRatio.html,物理显示器的每厘米大约有38个逻辑像素,或者每英寸大约有96个逻辑像素。
根据https://developer.android.com/training/multiscreen/screendensities,One,dp是一个虚拟像素单位,大约等于中密度屏幕(160 dpi;“基线”密度)。
所以我们可以说:
160 dp == 1英寸== 96 lp
wnvonmuf3#
您可以使用下面的代码使您的移动的屏幕响应:
因此,如果您在屏幕中使用5进行调试,屏幕的高度将为640,或者MediaQuery.of(context).size.(width and height)将为您提供测试设备的屏幕大小
screen Height of the device You Are Debuging = 640
context = BuildContext
size = size you want to be as you image , container etc height
。因此,它将根据所使用的设备转换屏幕大小