我知道有很多这样的问题,我已经阅读了很多关于此的博客和问题,我对我的理解并不满意。
我想支持多种屏幕和分辨率,如hdpi,xxxhdpi等。
我正在使用dimens.xml
来实现此目的。但是仍然不清楚如何计算不同屏幕的精确dp值。
例如,如果48dp x 48dp ImageView
适用于hdpi设备,我应该为xxhdpi设备定义什么值?是否有任何固定的计算方法就像可绘制的图像一样?
我正在使用这些文件夹来尝试支持多个屏幕:
values-sw320dp-hdpi
values-sw320dp-xhdpi/xxhdpi/xxxhdpi
我目前面临的问题很少
例如,我有Lg optimus G是xhdpi设备,但它从values-sw320dp-xxxhdpi
的{{1}}而不是xhdpi中读取值
同时在搜索支持不同的屏幕时,我多次尝试根据密度或计算像素等在运行时计算dp。
我对这一切感到困惑。请帮助我理解和学习制作响应式应用的正确方法。
答案 0 :(得分:0)
您可以使用resource qualifiers为视图指定不同的尺寸。
如果您希望ImageView的宽度根据屏幕大小而变化,请在名为dimens.xml
的{{1}}文件中创建一个新维度(例如)。
然后基本上创建了image_view_width
的副本,但添加了“大小”限定符。这将创建dimens.xml
文件的另一个版本,并且符合您指定资格的任何设备都将使用该版本的dimens.xml
。然后,将dimens.xml
添加到此新文件中,并为其提供不同的(更小/更大)值。您可以根据需要多次执行此操作,并根据需要使用尽可能多的限定符。
最后,当您想在布局中使用此值时,您只需键入:
image_view_width
和android会为你做其余的事。
希望这有帮助!