我正在尝试开发一个我想要多屏幕支持的应用程序。我已阅读有关多屏支持最佳实践的Android文章。根据文章,我们必须遵循3个重要的事项:
我已在项目中实施了所有这些要点。从相应的文件夹中正确拾取图像。但控制的安排并不相同。
e.g。我在三个模拟器上运行了应用程序
1
。分辨率240 * 320 dpi 120。
2。分辨率240 * 320 dpi 160。
3。分辨率240 * 320 dpi 240。
(所有仿真器都具有相同的分辨率但密度不同。)
问题是控件的位置在所有三个仿真器上都不相同。根据我的理解,如果在“dip”中提到android:layout_marginLeft和android:layout_marginTop,那么这个问题不应该发生。随着模拟器密度的增加,控件越往右侧。
即使所有设备的布局相同,我是否绝对有必要为所有屏幕尺寸和密度组合提供布局?
我错过了一些重要的观点吗?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:src="@drawable/bgd" android:scaleType="fitXY">
</ImageView>
<ImageView android:id="@+id/wtButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button" android:layout_marginLeft="170dip"
android:layout_marginTop="9dip"></ImageView>
<ImageView android:id="@+id/htButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button2" android:layout_marginLeft="220dip"
android:layout_marginTop="90dip"></ImageView>
</RelativeLayout>
图片:
答案 0 :(得分:3)
是的,您必须在清单文件中添加以下内容,然后才会使用 根据需要从ldpi,mdpi或orhdpi中获得
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<compatible-screens>
<screen
android:screenDensity="mdpi"
android:screenSize="mediaum" />
<screen
android:screenDensity="hdpi"
android:screenSize="large" />
<screen
android:screenDensity="xhdpi"
android:screenSize="large" />
</compatible-screens>
答案 1 :(得分:0)
首先计算设备高度和宽度
然后如果你想将180设置为leftpadding值而将48设置为toppadding view for view,则将其设置为
(320 /1.8 = 1.77)
meterView.setPadding((int)(width / 1.8),(int)(height / 10),3,5);
试试这个。
答案 2 :(得分:0)
问题在于设备的尺寸会增加图像尺寸的减小。 相应地重新调整图像大小(增加mdp和ldpi图像的大小)。 如果你想要瞄准Nexus系列,那么它总会以Xhdpi和hdpi为目标,这是一个真正的痛苦。 你也可以在这里参考我的答案: Android: support multiple screens