缩放不同设备的图像

时间:2014-12-31 06:18:13

标签: android imageview image-scaling

我想制作一个3x3的ImageViews网格。为此,我创建了一个带有3个TableRows的TableLayout,并在每个TableRow中放置了3个ImageView。为了使imageViews具有相同的宽度,我设置了它们android:layout_width=0dp并使它们android:layout_weight相等。为了缩放高度,我以编程方式完成 -

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Configuration configuration = getResources().getConfiguration();
    int screenWidthDp = configuration.screenWidthDp;
    int imageSize = screenWidthDp / 3;

    TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
    for (int i = 0; i < 3; i++) {
        TableRow tableRow = (TableRow) tableLayout.getChildAt(i);
        for(int j = 0; j < 3; j++) {
            ImageView imageView = (ImageView) tableRow.getChildAt(j);
            imageView.getLayoutParams().height = imageSize;
        }
    }
}

这在mdpi设备上运行良好 -

Correct Output

但对于xxhdpi设备完全没有 -

Incorrect Ouput

由于动态获取图像的dpi,我不确定drawable-xxhdpi,drawable-hdpi文件夹中图像的确切尺寸应该是多少。解决这个问题最有效的方法是什么?

编辑 - 我知道我需要为不同的设备制作不同版本的图片。我的问题是如何使用像GIMP等照片编辑软件找出缩放图像的分辨率。

4 个答案:

答案 0 :(得分:0)

Android drawable文件夹图像的定量应该是这样的:

低密度36x36(0.75x) 中等密度的48x48(1.0x基线) 72x72(1.5x)用于高密度 96x96(2.0x)用于超高密度 180x180(3.0x),超高密度 额外超高密度的192x192(4.0x)

有关更多信息,请参阅此链接:http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)

您可以使用iCons。

http://ticons.fokkezb.nl/

或Android资产工作室

http://romannurik.github.io/AndroidAssetStudio/

答案 2 :(得分:0)

您可以根据mdpi文件夹中的图像乘以设备屏幕密度来设置ImageView的宽度和高度。

这是获得密度的方法。

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int density = metrics.density;

答案 3 :(得分:0)

实际上您无需担心分辨率,很少有网站可以创建所有图标或所有预期分辨率的工具,还可以根据Android中的要求创建单独的文件夹。 您可以使用它们来获取所有大小的图标

查看以下内容:

  1. Android assets Studio
  2. Android Icon Generator
  3. Icon Styler
  4. Make App Icon