我已经为所有屏幕分辨率创建了一个应用程序。因此,根据文档,我在一个应用程序中创建了一个资源目录列表,为不同屏幕大小提供不同的布局设计,为中、高和超高密度屏幕提供不同的位图绘图。
例如:
res/layout-normal/my_layout.xml //普通屏幕大小的布局(“默认”)
res/layout-small/my_layout.xml //小屏幕布局
res/layout-large/my_layout.xml //大屏幕布局
res/layout-xlarge/my_layout.xml //超大屏幕布局
现在,在不同的设备中运行我的应用程序时,我注意到一些具有不同屏幕分辨率的设备从相同的资源目录(即布局正常)中获取布局,这类设备的示例如下:
HVGA (320 X 480)
WQVGA 400 (240 X 400)
WVGA (480 X 800)
WXGA (720 X 1280)
由于使用来自相同资源目录(即布局-正常)的布局,所以我很难管理所有设备的UI之间的空间,因为它们采用相同的布局。因为如果我管理HVGA的布局,那么它在其他地方看起来不太好,因为分辨率。
有什么办法解决这个问题吗?请帮我解决这个问题。
发布于 2012-03-21 07:52:37
不要为每个布局准备xml。只需为所有用户(ldp、mdpi、hdpi)制作相同名称的图像,并按大小放入这个不同的文件夹。
ldpi : 240X320
mdpi : 320X480
hdpi : 480X800并允许在文件中使用。
<supports-screens android:normalScreens="true"
android:anyDensity="true" android:largeScreens="true"
android:smallScreens="true" />我是用这种方式使android.it中的通用应用程序工作得很好,就像这样.
发布于 2012-07-20 05:07:42
@hasMukh指出了正确的方向,但如果你想让这4种设备的布局更加精确。我建议您使用“布局-密度-分辨率”格式的布局文件夹命名。举个例子
对于HVGA(320x480)布局文件夹,WQVGA(240x400)的布局文件夹应该是“ldpi-400x240”,而WVGA(480x800)的布局文件夹应该是“布局-mdpi-800x480”,而WXGA(720x1280)的布局文件夹应该是“ldpi-1280x720”。
只有当您计划针对特定的少数几个devices..and时,此方法才是好的,您只能保留一个拖放文件夹,并将dp值用于布局。
发布于 2012-03-21 07:48:06
我也有同样的问题,我用了另一种方法。获取设备的高度/宽度:
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
screenWidth = displayMetrics.widthPixels;
screenHeight = displayMetrics.heightPixels;并根据我使用的布局检查设备的高度/宽度,如
if(screenWidth == 320 || screenHeight== 480){
setContentView(R.layout.test_320_480);
}else if(screenWidth == 240 || screenHeight == 320){
setContentView(R.layout.test_240_320);
}else if(screenWidth == 480 || screenHeight == 800 || screenHeight == 854){
setContentView(R.layout.test_480_800);
}对相同屏幕的布局中的每个控件使用相同的id。i hv将所有布局放在布局文件夹中,它对我有效。
https://stackoverflow.com/questions/9800431
复制相似问题