Android,如何设置限定符以支持4.7“设备?

时间:2012-09-12 03:46:44

标签: android user-interface qualifiers

我根据不同的限定符设计了不同的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,但结果并不令人满意。

你有什么建议?任何建议将不胜感激。 谢谢 enter image description here

1 个答案:

答案 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]);