我知道这个问题已被问过很多次了。但我无法找到最可靠的解决方案。
我已经按照开发人员支持android中的每一步 Support Multiple Screen
将图像放在不同文件夹中以适应不同尺寸。 为设备屏幕制作不同的布局文件夹。 但问题仍然存在于从4.7英寸到5.0英寸的设备中。 布局在这些设备上受到很大干扰。
克服这一点的最佳方法是什么。
答案 0 :(得分:3)
基本上某些设备属于大型或普通组,但它们在高度和宽度方面存在很大差异,例如Nexus-4 4.7"
维度为768x1280
,另一个设备5.1"
具有维度{{ 1}}。因此,您可以根据高度和宽度创建布局文件夹。例如 - 480x800
。然后根据您的要求在这些布局中设置视图。
答案 1 :(得分:0)
如果您正在设计任何表格,请选择Match Parent,不要选择硬核像素位置。使用相对布局。
请告诉您有关兼容性问题的更多信息?
答案 2 :(得分:0)
请参阅以下链接:
Multipal screen size handling!
对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,它为不同的屏幕尺寸和不同的位图绘图提供不同的布局设计,适用于小型,中型,高密度和超高密度屏幕。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density
Manifest中的以下代码支持所有dpis。
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
答案 3 :(得分:0)
请参阅以下链接:
http://developer.android.com/guide/practices/screens_support.html
对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,它为不同的屏幕尺寸提供不同的布局设计,为小,中,高和超高密度屏幕提供不同的位图可绘制。 您可以在res文件夹中使用不同大小的布局文件,也可以根据密度对可绘制图像进行更改。
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="false"
android:xlargeScreens="true"
/>
<compatible-screens>
<screen
android:screenDensity="ldpi"
android:screenSize="small" />
<screen
android:screenDensity="mdpi"
android:screenSize="normal" />
<screen
android:screenDensity="xhdpi"
android:screenSize="large" />
<screen
android:screenDensity="xhdpi"
android:screenSize="xlarge" />
</compatible-screens>
然后任何活动都使用这一行..
android:configChanges="orientation|screenSize|keyboardHidden"
答案 4 :(得分:0)
如果您需要绝对测量屏幕的密度,可以使用以下代码:
从某个地方的某个地方得到这个,但仍然相关。享受吧!
DisplayMetrics metrics = new DisplayMetrics();
try {
WindowManager winMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE)
;
winMgr.getDefaultDisplay().getMetrics(metrics);
}
catch (Exception e) {
metrics.density = 1;
}
值metrics.density现在包含屏幕密度的度量,160dpi密度作为&#39;基线&#39;。更多信息可以在这里找到:
http://developer.android.com/reference/android/util/DisplayMetrics.html#density