In Qt / QML, how to load different images for different device densities (Android)

I am using Qt 5.4 and Qt Creator 3.3.2.

Downloading various images, depending on the current OS, can be done using

Image {source: "logo.png"   }

and following resources

logo.png
+windows/logo.png
+android/logo.png
+ios/logo.png

If I understand the documentation correctly, adding

+ios/logo.png
+ios/logo@2x.png
+ios/logo@3x.png

on iOS, select different images based on the density of the device.

Can I use a similar mechanism to load different images for different Android tags (ldpi, mdpi, hdpi, xhdpi, ...). If so, what should the directory structure look like?

+4
source share
2 answers
Image {source: "logo" + density + ".png" }

density , , S, M, L, logoS.png, logoM.png logoL.png. , . .

QScreen logicalDotsPerInch QML density.

, , . , .

+3

ppi Screen.pixelDensity QML ppi. KDAB:

property int ppi: Screen.pixelDensity*25.4 

property var dir: ["MDPI","HDPI","XHDPI","XXHDPI",
                                    "XXXHDPI","XXXXHDPI"]
readonly property int ppiRange:{ 
 if (ppi>=540)
  5
 else if (ppi>=360)
  4
 else if (ppi>=270)
  3
 else if (ppi>=180)
  2
 else if (ppi>=135)
  1
 else
  0
 }

BorderImage {
   id: scalableElement3
   source: "./Images/" + dir[ppiRange] + "/image.png"
   width: parent.width-ppi/2
   height: ppi*1.5
   anchors.centerIn: parent
   border.left: 0.3*ppi; border.top: 0.3*ppi
   border.right: 0.18*ppi; border.bottom: 0.18*ppi
 }
+1

All Articles