Androidutveckling, dimens.xml förvirrar

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Apr 2005

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?

Trädvy Permalänk
Medlem
Registrerad
Apr 2002
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

Intel i7 6850k || Asus X99-A II || Evga GTX 980Ti || Kingston HyperX Fury 2666 64GB || Samsung 950 Pro 512GB || XB270HU 1440p IPS G-Sync

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Apr 2005

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.

Trädvy Permalänk
Medlem
Registrerad
Apr 2002
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.

Intel i7 6850k || Asus X99-A II || Evga GTX 980Ti || Kingston HyperX Fury 2666 64GB || Samsung 950 Pro 512GB || XB270HU 1440p IPS G-Sync