隨著項目深入,需要移植到安卓上,問題來了,QML安卓適配!
幸好PC端程序和手機屏幕長寬比例相似。雖然單位像素,尺寸不同,通過比例縮放,可以實現組件PC和安卓通用代碼。
第一步:定義全局的轉換函數(300,500是你的PC端設計尺寸)
1 property var x_scale:mainWindow.width/300
2 property var y_scale:mainWindow.height/500
3
4 function get_x(x)
5 {
6 return x*x_scale;
7 }
8 function get_y(y)
9 {
10 return y*y_scale;
11 }
第二步:將所有相關尺寸的都通過上面的轉換函數計算新值
1 Text {
2 id:nameText
3 x:get_x(8)
4 y:get_y(11)
5 width:get_x(80)
6 horizontalAlignment:Text.AlignRight
7 color: "#000000"
8 text: ""
9 }
第三步:對於有些控件,安卓和PC端表現形式不一樣,需要通過判斷平台,額外定義。判斷平台代碼
function is_android()
{
return (Qt.platform.os == "android");
}
//調用方法
Image {
id: imageLogo
y: get_y(58)
width: get_x(167)
height: get_y(70)
anchors.horizontalCenterOffset: is_android()?get_x(-8):get_x(-4)
anchors.horizontalCenter: parent.horizontalCenter
source: "logo.png"
}
最後,對於字體的大小的適配,推薦使用pixelSize來定義,同樣需要轉換函數來計算新的尺寸,這樣可以跟其他控件保持一致。