我想制作一个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设备上运行良好 -
但对于xxhdpi设备完全没有 -
由于动态获取图像的dpi,我不确定drawable-xxhdpi,drawable-hdpi文件夹中图像的确切尺寸应该是多少。解决这个问题最有效的方法是什么?
编辑 - 我知道我需要为不同的设备制作不同版本的图片。我的问题是如何使用像GIMP等照片编辑软件找出缩放图像的分辨率。
答案 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)
答案 2 :(得分:0)
您可以根据mdpi文件夹中的图像乘以设备屏幕密度来设置ImageView的宽度和高度。
这是获得密度的方法。
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.density;
答案 3 :(得分:0)
实际上您无需担心分辨率,很少有网站可以创建所有图标或所有预期分辨率的工具,还可以根据Android中的要求创建单独的文件夹。 您可以使用它们来获取所有大小的图标