Issue
I have two layouts for different screen size:
layout
layout-w580dp
Display metrics log for portrait and landscape orientation:
DisplayMetrics{density=1.3312501, width=800, height=1280, scaledDensity=1.5841876, xdpi=216.0, ydpi=216.0}
DisplayMetrics{density=1.3312501, width=1280, height=800, scaledDensity=1.5841876, xdpi=216.0, ydpi=216.0}
Potrait orientation has 800/1.5841876=504dp
, so resource from layout
folder sould be used.
Landscape orientation has 1200/1.5841876=704dp
, so resource from layout-w580dp
folder sould be used.
However, in both orientation resource is obtained from layout-w580dp
folder.
What causes that issue?
Solution
According to Supporting Multiple Screens the formula to convert from dp to physical pixels is px = dp * (dpi / 160)
. Since we want to convert in the opposite direction, we need to solve for dp
: dp = px * 160 / dpi
. For your two examples, we have the following values and calculation:
px = 800
(width),dpi = 216
(xdpi)dp = px * 160 / dpi = 800 * 160 / 216 = 592.59
.px = 1280
(width),dpi = 216
(xdpi)dp = px * 160 / dpi = 1280 * 160 / 216 = 948.15
.
In both cases, the width is more than 580 dp.
Answered By - Code-Apprentice
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.