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

dw1jzc5e  于 2022-12-14  发布在  Flutter
关注(0)|答案(3)|浏览(480)

我得到了一个新应用程序的设计。所有尺寸都是Android可用的,并以DP -(* 密度无关像素 )给出。我如何将这些值转换为Flutter的LP 逻辑像素 *)。我知道Window.devicePixelRatio为每个逻辑像素提供了设备像素数。
DP和LP之间的确切区别是什么?是否有内置的方法将DP转换为LP?

n3ipq98p

n3ipq98p1#

根据文档(FlutterView.devicePixelRatio和Flutter for Android Developers),DP和LP之间没有真实的的区别。
设备像素也称为物理像素。逻辑像素也称为设备无关或分辨率无关像素。
Flutter没有dp,但有逻辑像素,基本上和设备无关像素一样,所谓device泛指elRatio表示的是单个逻辑像素中物理像素的比例。

vsmadaxz

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

wnvonmuf

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。因此,它将根据所使用的设备转换屏幕大小

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));
}

相关问题