我根据不同的限定符设计了不同的UI,例如drawable-hdpi和drawable-mdpi。正如你在4.3英寸大小的移动设备(如SG2)上测试时所看到的那样,你可以在下面的图像中看到,UI与屏幕相匹配。但是,当我测试4.7“像SG3和Atrix这样的设备时,有一些差距,这是不好的。< / p>
所以,我想根据新的尺寸重新设计这些设备的屏幕。我读过Supporting Multiple Screens但是,我找不到解决方案。我尝试在drawable-xdpi中添加新UI,但它影响了我在4.3“设备上的当前设计。我尝试使用swdp,wdp和hdp,但结果并不令人满意。
你有什么建议?任何建议将不胜感激。 谢谢
答案 0 :(得分:0)
所以,你将这些图像放入{*} dpi文件夹..对吗? 您可能已经知道,将正常分辨率(最适合您应用的分辨率 - 设备大小和分辨率)图像放入&#34; mdpi&#34;文件夹..如果你的应用程序是在具有极高分辨率(xdpi)的extraLarge设备中发布的,它会将图像放大到2.0比例,如果设备很大且分辨率很高(hdpi),它会将图像放大到1.5比例。如果设备具有低dpi&amp; amp,则android会将图像大小缩小到0.75。小尺寸 。 但是,如果它对你来说还不够(对我来说还不够),你可以简单地找出目标设备的分辨率并自己调整图像大小。 您所要做的就是找出(必须自己计算)常数来调整图像的分辨率。例如; 0.6(根据发现的屏幕分辨率,您将使用常数乘以图像的宽度和高度。 这是我的例子:
Display currentScreen = this.getWindowManager().getDefaultDisplay();
Point dimension = new Point();
currentScreen.getSize(dimension);
//int widthPixel = dimension.x;
int heightPixel = dimension.y;
System.out.println("Screen Resolution (Height) : "+heightPixel);
int imgHeight;
imgHeight = (int) Math.floor(heightPixel * 0.6);
int widthSeparator = (int) dimension.y/13;
System.out.println("Width Separator : "+widthSeparator);
//imgHeight = 240;
System.out.println("Image Resolution (Height) : "+imgHeight);
FrameLayout.LayoutParams layoutParamCR = new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParamCR.setMargins(widthSeparator, 0, 0, 0);
//FrameLayout.LayoutParams layoutParamL = new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
//layoutParamL.setMargins(-30, 0, 0, 0);
ImageView leftCover = (ImageView) findViewById(R.id.magCoverLeft);
leftCover.setAdjustViewBounds(true);
leftCover.setMaxHeight(imgHeight);
leftCover.setLayoutParams(layoutParamCR);
leftCover.setImageBitmap(null);
ImageView cover = (ImageView) findViewById(R.id.magCover);
cover.setAdjustViewBounds(true);
cover.setMaxHeight(imgHeight);
cover.setLayoutParams(layoutParamCR);
cover.setImageBitmap(coverImages[0]);
ImageView rightCover = (ImageView) findViewById(R.id.magCoverRight);
rightCover.setAdjustViewBounds(true);
rightCover.setMaxHeight(imgHeight);
rightCover.setLayoutParams(layoutParamCR);
rightCover.setImageBitmap(coverImages[1]);