材质图标:缩放48dp到144dp的限制

时间:2017-06-15 20:46:39

标签: android android-studio material-design android-drawable gimp

我正在尝试在文件列表视图中使用ic_library_books_black_48dp Material Icon作为文件类型图标。

最大的可用文件 ic_library_books_black_48dp.png ,密度如下

drawable-mdpi 
drawable-hpi 
drawable-xhdpi 
drawable-xxhdpi
drawable-xxxhdpi

由于图像文件类型显示缩略图预览,因此需要较大的图标以保持一致性。它们被调整为 144x144 dp

<ImageView
    android:id="@+id/grid_item_iv"
    android:layout_width="144dp"
    android:layout_height="144dp"/>

以下是 xhdpi设备上原型的放大视图:

File listing view 注意:放大浏览器以查看像素化差异。

我对提供的xhdpi分辨率不满意,所以我制作了xxhdpi和xxxhdpi版本的副本,并相应地重命名,并将它们放入 drawable-xhdpi 文件夹

resources
    drawable-xhdpi
        ic_library_books_black_48dp.png
        ic_library_books_black_48dp_xxhdpi.png
        ic_library_books_black_48dp_xxxhdpi.png

然后在 GetView()

中分配了它们
switch (fileType)
{
    case AttachmentFileType.FileType.Docs:
        iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp);
        break;
    case AttachmentFileType.FileType.Audio:
        iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp_xxhdpi);
        break;
    case AttachmentFileType.FileType.Images:
        iv.SetImageResource(Resource.Drawable.ic_library_books_black_48dp_xxxhdpi);
        break;
    default:
        iv.SetImageResource(Resource.Drawable.ic_attachment_test);
        break;
}

我更喜欢在我的xhdp设备上将ic_library_books_black_48dp_xxxhdpi.png的清晰度扩展到144x144 dp。但是,这种方法不适用于更高密度的屏幕(xxhdpi,xxxhdpi),因为xxxhdpi是最高的ic_library_books_black_48dp.png的版本。为了支持xxhdpi和xxxhdpi,我需要分别使用xxxxhdpi和xxxxxhdpi版本的图标(即“两个等级更高”)。 有没有办法让这项工作不会导致创建自定义图标(可以在保持像素密度的情况下安装Android工作室或编辑程序高档)?

3 个答案:

答案 0 :(得分:2)

一种棘手的方法是将imageView的scaleType设置为fitcenter,并将constant width = 144dp和height = 144dp设置为imageview。它会将你的图标放大到144dp

<ImageView
    android:layout_width="144dp"
    android:layout_height="144dp"
    android:scaleType="fitCenter"
    android:src="@drawable/ic_library_books_black_48dp"/>

答案 1 :(得分:1)

如果可以,我会使用矢量图形。它们直接来自Android Studio。

File -> New -> Vector Graphic

然后点击图标以“搜索”...找到您的图书馆图标...

Library Books

接下来完成它。 (这里不需要改变任何东西)。

如果你高于API 21,那么你很高兴,你可以像任何其他图标一样引用它。

如果您需要支持降低API,请阅读the official Android Documentation about Vector Drawables

此外,阅读所有关于Android Studio support here

的内容

答案 2 :(得分:0)

将imageView的scaleType用于FIT_CENTER。 FIT_CENTER-使用CENTER缩放图像。 在XML文件中

    android:scaleType="fitCenter"

或在您的Activity类

 imgview.setScaleType(ImageView.ScaleType.FIT_CENTER);