首页 > 其他分享 >PixelRatio 中文

PixelRatio 中文

时间:2022-12-01 00:35:33浏览次数:60  
标签:中文 PixelRatio get 像素 iPhone 对齐 Android

转载来自

PixelRatio · React Native 中文网

PixelRatio

PixelRatio 可以获取到设备的像素密度和字体缩放比。

根据像素密度获取指定大小的图片

如果应用运行在一个高像素密度的设备上,显示的图片也应当分辨率更高。一个取得缩略图的好规则就是将显示尺寸乘以像素密度比:

const image = getImage({
width: PixelRatio.getPixelSizeForLayoutSize(200),
height: PixelRatio.getPixelSizeForLayoutSize(100),
});
<Image source={image} style={{width: 200, height: 100}} />
 

译注: 这段代码的意思是,如果你要在屏幕上摆放一个宽 200 高 100 的图片,那么首先要准备多个分辨率尺寸的图。PixelRatio.getPixelSizeForLayoutSize(200)方法会根据当前设备的 pixelratio 返回对应值,比如当前设备的 pixelratio 为 2,则返回 200 * 2 = 400,最后生成的参数为{ width: 400, height: 200 },然后开发者自己实现 getImage 方法,根据这一参数,返回最符合此尺寸的图片地址。

像素网格对齐

在 iOS 设备上,你可以给元素指定任意精度的坐标和尺寸,例如 29.674825。不过最终的物理屏幕上只会显示固定的坐标数。譬如 iPhone4 的分辨率是 640x960,而 iPhone6 是 750*1334。iOS 会试图尽可能忠实地显示你指定的坐标,所以它采用了一种把一个像素分散到多个像素里的做法来欺骗眼睛。但这个作用的负面影响是显示出来的元素看起来会有一些模糊。

在实践中,我们发现开发者们并不想要这个特性,反而需要去做一些额外的工作来确保坐标与像素坐标对齐,来避免元素显得模糊。在 React Native 中,我们会自动对齐坐标到像素坐标。

我们做这个对齐的时候必须十分小心。如果你同时使用已经对齐的值和没有对齐的值,就会很容易产生一些因为近似导致的累积错误。即使这样的累积错误只发生一次,后果也可能会很严重,因为很可能会导致一个像素宽的边框最终突然消失或者显示为两倍的宽度。

在 React Native 中,所有 JS 中的东西,包括布局引擎,都使用任意精度的数值。我们只在主线程最后设置原生组件的位置和坐标的时候才去做对齐工作。而且,对齐是相对于屏幕进行的,而非相对于父元素进行,进一步避免近似误差的累积。

示例

 

文档

方法

get()

static get()
 

返回设备的像素密度,例如:


getFontScale()

static getFontScale(): number
 

返回字体大小缩放比例。这个比例可以用于计算绝对的字体大小,所以很多深度依赖字体大小的组件需要用此函数的结果进行计算。

  • Android 上对应的是用户选项里的“设置 > 显示 > 字体大小”。
  • iOS 上对应的是用户选项里的Settings > Display & Brightness > Text Size, value can also be updated in Settings > Accessibilty > Display & Test Size > Larger Text

如果没有设置字体缩放大小,它会直接返回设备的像素密度。

目前这个函数仅仅在 Android 设备上实现了,在 iOS 设备上它会直接返回默认的像素密度。


getPixelSizeForLayoutSize()

static getPixelSizeForLayoutSize(layoutSize: number): number
 

将一个布局尺寸(dp)转换为像素尺寸(px)。

一定会返回一个整数数值。


roundToNearestPixel()

static roundToNearestPixel(layoutSize)
 

Rounds a layout size (dp) to the nearest layout size that corresponds to an integer number of pixels. For example, on a device with a PixelRatio of 3, PixelRatio.roundToNearestPixel(8.4) = 8.33, which corresponds to exactly (8.33 * 3) = 25 pixels.

改进此文档

标签:中文,PixelRatio,get,像素,iPhone,对齐,Android
From: https://www.cnblogs.com/sexintercourse/p/16940234.html

相关文章

  • PixelRatio
    转载来自PixelRatio·ReactNative PixelRatioPixelRatio givesyouaccesstothedevice'spixeldensityandfontscale.Fetchingacorrectlysizedimage​......
  • Charles中contents出现中文乱码问题解决
    检查证书是否过期,如过期,先重置过期证书再安装证书  SSLProxyingSettings中include设置*:443  即可解决contents中文乱码问题......
  • 案例-文件下载-代码实现。中文文件名问题
    案例-文件下载-代码实现文件下载需求:1.页面显示超链接2.点击超链接后弹出下载提示框3.完成图片文件下载分析:1.超链接......
  • 11月《代码大全2中文版》读书笔记
    本月,我进行了对《代码大全2》第四章《关键的“构建”决策》的学习,以下是我个人的一些学习心得。在决策的第一步,我们要做的就是选择编程语言,因为编程语言对于软件......
  • datax-web同步mysql数据中文乱码问题
    在同步数据的时候中文乱码首先看看俩数据库字符集是否相同是不是utf8如果确认没有问题之后打开刚才的任务在连接mysql的后面加上 ?useUnicode=true&characterEncoding=u......
  • PbootCMS授权中文域名方法
    通过PbootCMS搭建的网站域名都需要免费获取授权码才可以打开,如果域名中含有中文,那就会提示“域名格式有误”,这是为什么呢?如下图: 解决方法: 1、先给中文域名转码,中文......
  • 宜搭中给表单中文本组件或成员组件赋值
    //文本组件this.$('textField_klum5uve').setValue('给目标样纱赋值');//成员搜索框需要数组格式,value是工号,label是名字this.$('employeeField_km1jdjno').setValue(......
  • git提交日志中文配置
    gitbash已配置显示中文  但拉取时显示中文提交文件名为数字串 原因为在默认设置下,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码。......
  • 解决Qt msvc编译器中文乱码
    编码知识科普参考彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_利白的博客-CSDN博客_qt中文乱码解决方法上文讲到了QString显示中文乱码的原因。我的理解qt先对输入......
  • 下载vscode并设置中文
    下载vscode下载地址:https://code.visualstudio.com/一路安装,选择在桌面创建快捷方式双击打开设置中文商店搜索Chinese下载ctrl+shift+p搜索configuredis......