我知道互联网上有关于DPI px英寸等问题的不堪重负.
但经过几个小时的谷歌搜索后,我的情况似乎不会发生在其他任何人身上!
我有两个设备自定义构建与android工作室,都是mdpi.
但是一个设备是3.65英寸而另一个设备是10.1英寸.
我创建了一个文件夹,其中包含2张250×125图像,dpi设置为160 dpi
如果通常我会用dp单位而不是像素在我的XML中声明我的2个图像…我想在两个屏幕上结果应该是相同的吗?
好吧,似乎图像保持相同的大小,不看@设备是多少英寸
所以要明确:
我需要更改我的资源或代码,以便我的布局在不同英制尺寸下的尺寸相同?
如何制作它,即使在3.65英寸的屏幕上,按钮也会缩放到与10.1相同的比例.不是英寸……不是像素……比例……
这是我的XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/buttonEnglish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/english"
android:layout_marginBottom="5sp"
android:layout_marginLeft="5sp"
android:layout_marginRight="2sp"
android:layout_marginTop="0sp" />
<Button
android:id="@+id/buttonNederlands"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/nederlands"
android:layout_marginBottom="5sp"
android:layout_marginLeft="20sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
我很绝望…
Thanx提前
解决方法:
这可能有助于解释您所面临的问题……
您的图像为250×125 – 宽度为250像素,高度为125像素.
您指定了160 dpi – 这意味着1英寸= 160像素.
因此,两个屏幕都按照您的要求进行操作,并在1.5625英寸处显示250像素.在大屏幕上,它看起来“按比例”正确.在3.65英寸的屏幕上,按钮占据屏幕的一半以上 – 就像你要求它一样.
如果您希望较小的屏幕看起来像较大的屏幕,那么您有三个选项:
>调整图像大小并提供2个图像资源(或更多用于更多种类的屏幕).这就是为什么你可以拥有mdpi,hdpi,xhdpi等资源文件夹的原因.你可以调整图像中的像素以适应屏幕大小.
>您使用“加权”LinearLayout,根据可用的屏幕空间调整提供的空间大小.对于这种类型的布局,您不必担心性能.
>根据屏幕尺寸对图像进行运行时缩放 – 使用DisplayMetrics获取屏幕的大小和密度,并调整图像以适合屏幕.
最后一个选项在很多方面都是最灵活的,因为如果您最终得到的屏幕非常大或非常小,您可以进行调整,例如将按钮或文本移动到屏幕上的其他位置(上方或下方)其他内容).但是对于你的具体问题,任何一个都足够了.