【问题标题】:Android, How to set qualifiers in order to support 4.7" devices?Android,如何设置限定符以支持 4.7" 设备?
【发布时间】:2012-09-12 03:46:44
【问题描述】:

我根据不同的限定符(如 drawable-hdpi 和 drawable-mdpi)设计了不同的 UI。正如您在下图中看到的,当我在 SG2 等 4.3" 尺寸的手机上进行测试时,UI 与屏幕匹配。但是,当我在 SG3 和 Atrix 等 4.7" 设备上进行测试时,会有一些差距,这并不好。

所以,我想根据新的尺寸重新设计这些设备的屏幕。我读了Supporting Multiple Screens 但是,我没有找到解决方案。我尝试在 drawable-xdpi 中添加新 UI,但它影响了我在 4.3" 设备上的当前设计。我尝试使用 swdp、wdp 和 hdp,但结果并不令人满意。

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

【问题讨论】:

    标签: android user-interface qualifiers


    【解决方案1】:

    所以,您将这些图像放入 {*}dpi 文件夹中......对吗? 正如您可能已经知道的那样,您将正常分辨率(最适合您的应用程序的分辨率 - 设备大小和分辨率)图像放入“mdpi”文件夹。如果您的应用程序在具有非常高分辨率的超大设备中启动( xdpi) ,它将图像放大到 2.0 的比例,如果设备大且高分辨率 (hdpi),它会将图像放大到 1.5 的比例。如果设备具有低 dpi 和小尺寸,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]);
    

    【讨论】:

    • 感谢亲爱的 Aung,图像不存储在设备中,所有图像都来自互联网,图像视图根据图像数量动态生成。不过,我明白了你的想法。谢谢。让我测试一下,看看在不同屏幕尺寸上的结果是什么……
    • 不客气..我以为你的图片在 {*}dpi 文件夹中..我的例子更适合来自互联网的图片,因为我是这样写的..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多