在阅读本文之前,读者可以先了解一下我之前发布的一篇有关像素密度计算的文章《Qt for Android屏幕DPI计算方法》。
在前面的文章中描述了计算手机DPI的方法,这里需要提醒大家的是,即使通过设备的像素密度值,选取了正确的图片资源文件夹,在QML移动开发中,也还是需要对图片大小做一个换算处理。请看下面代码片段:
import QtQuick 2.12
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.12
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.2
...
Image {
id: backgoundImage
anchors.fill: parent
width: sourceSize.width/Screen.devicePixelRatio
height: sourceSize.height/Screen.devicePixelRatio
source: "qrc:/img-res/"+appEngine.resourceFolder()+"/signin_bg.png"
}
...
sourceSize.width得到的是图片的像素宽度,用它除以设备像素比值(请看我前面发表的文章),得到设备无关像素值。为什么需要这样做呢?在QML for Android开发中,对象的宽度和高度的单位不是像素,而是设备无关像素值(强调:这里指移动开发,而不是桌面开发)。可以这样证明:在1080x1920像素分辨率的手机上