如何将Android的DP转换为Flutter的LP?DP和LP有什么区别?



我得到了一个新应用的设计。所有尺寸均为Android准备就绪,并在DP-(密度无关的像素)中给出。如何将这些值转换为 Flutter的LP 逻辑像素)。我知道Window.devicePixelRatio为我提供了每个逻辑像素的设备像素数量。

DP和LP之间的确切区别是什么?DP到LP转换有任何内置方法吗?

根据文档(FlutterView.devicePixelRatio和Android开发人员的颤音),DP和LP之间没有真正的区别。

设备像素也称为物理像素。逻辑像素也称为与设备无关或独立于分辨率的像素。

颤动没有dp s,但有逻辑像素,基本上与独立于设备的像素相同。所谓的devicepixelratio表示单个逻辑像素中物理像素的比例。

根据https://api.flutter.dev/flutter/dart-ui/flutterview/devicepixelratio.html大约有38个逻辑像素,每英寸大约有38个逻辑像素,或大约96个逻辑像素,物理显示。

根据https://developer.android.com/training/multiscreen/screendensities,hone dp是一个虚拟像素单元,在中密度屏幕上大致等于一个像素(160dpi;基线"密度"密度"密度"。)。

所以我们可以说:

160 dp == 1英寸== 96 lp

您可以使用下面的代码使您的移动屏幕响应:

double getHeight(double screenHeightofthedeviceYouAreDebuging,BuildContextcontext,double size)
{
     return (MediaQuery.of(context).size.height / screenHeight) * size;
} 

因此,如果您在屏幕上使用5调试,则屏幕高度将为640或媒体图(上下文)。(宽度和高度)将为您提供测试设备的屏幕尺寸 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));
}

相关内容

  • 没有找到相关文章

最新更新