Androidutveckling, dimens.xml förvirrar

Permalänk

Androidutveckling, dimens.xml förvirrar

Jag har precis insett att man kan styra parametrar i apparna genom resursfiler som läses in beroende på skärmstorlek. Vad jag dock inte riktigt förstår är hur detta går till, eller rättare sagt: Det funkar inte som jag vill.
Jag håller på med en app som i huvudsak kommer köras på några Samsung Galaxy Tab 2 10.1 och att få det att se okej ut i en enhet är inga problem. När jag däremot testar det på min LG G5 så ser det inte lika bra ut och det var då jag hittade om hur man använder bland annat dimens.xml, men jag får det inte att funka med telefonen.
Jag har tre mappar under "res" som heter values, values-sw400dp och values-sw720dp. Om jag inte tolkat detta fel så ska jag göra så här:

Min G5 har 554 dpi och utgångsläget är alltid 160 dpi.
1440 är bredden på min G5 i porträttläge.
1440 / (554 / 160) = 1440 / 3,4625 ~ 415 dp.
Alltså borde väl values-sw400dp läsas in då det är närmast med "smallest width 400 dp"?

Samsung-plattan får med samma beräkning:
800 / (149 / 160) = 800 / 0,93125 = 859 dp

Samsungplattan läser in sw720dp men min telefon läser values.

Vad gör jag för fel?

Permalänk
Medlem
Skrivet av Squall Leonhart:

Jag har precis insett att man kan styra parametrar i apparna genom resursfiler som läses in beroende på skärmstorlek. Vad jag dock inte riktigt förstår är hur detta går till, eller rättare sagt: Det funkar inte som jag vill.
Jag håller på med en app som i huvudsak kommer köras på några Samsung Galaxy Tab 2 10.1 och att få det att se okej ut i en enhet är inga problem. När jag däremot testar det på min LG G5 så ser det inte lika bra ut och det var då jag hittade om hur man använder bland annat dimens.xml, men jag får det inte att funka med telefonen.
Jag har tre mappar under "res" som heter values, values-sw400dp och values-sw720dp. Om jag inte tolkat detta fel så ska jag göra så här:

Min G5 har 554 dpi och utgångsläget är alltid 160 dpi.
1440 är bredden på min G5 i porträttläge.
1440 / (554 / 160) = 1440 / 3,4625 ~ 415 dp.
Alltså borde väl values-sw400dp läsas in då det är närmast med "smallest width 400 dp"?

Samsung-plattan får med samma beräkning:
800 / (149 / 160) = 800 / 0,93125 = 859 dp

Samsungplattan läser in sw720dp men min telefon läser values.

Vad gör jag för fel?

Jag tror att du är på rätt spår men har fel angående vilken DPI som gäller för enheten.

Definitioner:
https://developer.android.com/guide/practices/screens_support...
https://developer.android.com/guide/practices/screens_support...

px = dp * (dpi / 160) => dp = px / (dpi/160)

LG G5:
1440x2560, 640 dpi (det var den dpi jag hittade att enheten anser när jag googlade på det)

dvs

dp = 1440 / (640/160) = 360

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk

Tackar! Det funkade utmärkt!

Jag trodde att jag bara kunde ta LG:s specar: http://www.lg.com/us/mobile-phones/g5#G5Specs och räkna från dessa.

Permalänk
Medlem
Skrivet av Squall Leonhart:

Tackar! Det funkade utmärkt!

Jag trodde att jag bara kunde ta LG:s specar: http://www.lg.com/us/mobile-phones/g5#G5Specs och räkna från dessa.

Uppenbarligen inte. Jag gissar att båda uppgifterna är "rätt" men i olika sammanhang, dvs specifikationen för själva skärmen kontra skalningsinställningen i mjukvaran.

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304