Android 缩放不同设备的图像

Android 缩放不同设备的图像,android,imageview,image-scaling,Android,Imageview,Image Scaling,我想制作一个3x3的ImageView网格。为此,我创建了一个包含3个TableRows的TableLayout,并在每个TableRow中放置了3个ImageView。为了使图像视图具有相同的宽度,我将它们的android:layout\u width=0dp,并使它们的android:layout\u权重相等。为了缩放高度,我通过编程进行了调整- public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFo

我想制作一个3x3的ImageView网格。为此,我创建了一个包含3个TableRows的TableLayout,并在每个TableRow中放置了3个ImageView。为了使图像视图具有相同的宽度,我将它们的android:layout\u width=0dp,并使它们的android:layout\u权重相等。为了缩放高度,我通过编程进行了调整-

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设备上运行良好-

但对于xxhdpi设备而言,则完全不是-

由于图像的dpi是动态获取的,我不确定我的可绘制xxhdpi、可绘制hdpi文件夹中图像的确切尺寸。解决这个问题最有效的方式是什么


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

Android drawable文件夹图像的比例应如下所示:

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


有关更多信息,请参阅此链接:

您可以为此使用TiCons

或Android资产工作室


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

这是获得密度的方法

DisplayMetrics=新的DisplayMetrics;getWindowManager.getDefaultDisplay.getMetricsmetrics;
int density=metrics.density

实际上,你不必为分辨率而烦恼,很少有网站提供了创建所有图标或所有预期分辨率的工具,还可以根据Android的要求创建单独的文件夹。 您可以使用它们来获取所有大小的图标

请查看以下内容:
不同类型的设备有不同的图片你可以在我的答案中查看give网站