将Material Design图标导入到Android项目中

187

有没有一种简单的方法可以将Material Design图标库中的所有图标导入到Android项目中,而不必手动操作?

7个回答

444

请查看矢量资源工具(Vector Asset Studio)

按照以下步骤开始使用矢量资源工具:

  • 在Android Studio中打开一个Android应用项目。
  • 在“项目”窗口中,选择“Android”视图。
  • 右键单击“res”文件夹,然后选择“New > Vector Asset”。

打开矢量资源工具后,您可以按照以下方式添加材料设计图标:

  • 选择“材料设计图标”(通过单击“剪贴画:ICON”)
  • 点击“选择”
  • 选择一个材料设计图标

30
这个答案太棒了!你不仅可以在Android Studio中选择已经捆绑的Material Design图标(无需任何额外插件),而且还可以得到VectorDrawable和(等等...):“如果您的最低API级别设置为其中之一,Vector Asset Studio还会指示Gradle生成矢量可绘制的光栅图像以实现向后兼容性”。 - sdf3qrxewqrxeqwxfew3123
5
甚至可以在 XML 文件中更改颜色,新的 PNG 文件将在构建过程中生成(位于 app/build/generated/res/pngs/debug 目录下)。我喜欢! :-) - sdf3qrxewqrxeqwxfew3123
2
给这个答案点赞!如果你的图标不显示,可以从Material Icons下载它,如果选择SVG格式,在矢量资产中选择本地SVG文件并生成图标的xml文件。如果选择PNG格式,右键单击res->new Image Asset->选择图像->在路径中选择大图像(xxxhdpi),并为每个密度生成png。 - noe
14
从Android Studio 2.2预览版5开始,在矢量资产工具中不再有“选择”按钮,而是需要点击图标名称下方的小图标来进行选择。我花了一些时间才弄清楚这一点... - balu
2
最近的矢量资产工作室有一个剪贴画类型,而不是材料图标,请单击下面的Android图标选择您的图标。 - Gigarthan
显示剩余5条评论

38

在文件夹 drawable 上右键点击 > 新建 > 矢量图素材,然后点击图标:

Android Studio 屏幕截图,显示需要点击的不明显位置


24

1
我已经安装了它,但是如何使用它? - galdin
1
@gldraphael - 安装后选择“文件”-“新建”-“材料设计图标”。选择48dp的大小,以确保生成的每个文件都具有标准的48、72、96、144和192像素高度/宽度。当然,如果需要,可以选择更小的dp大小。 - Martyn Davis
2
谢谢您,@MartynDavis。不过我已经找到了。我最喜欢的是可以选择颜色。 - galdin

8

这是一个脚本,用于克隆材料设计图标的GitHub仓库,网址为

https://github.com/google/material-design-icons

并创建所有文件的索引。它还将svg文件按类别复制到子目录中。您可以将其用作将感兴趣的文件复制到项目中的基础-只需修改find和cp复制语句以符合您的喜好。例如,如果您需要某个特定大小的png,则它们位于相邻的目录中,您需要相应地修改find和copy命令。

enter image description here

#!/bin/bash
# WF 2016-06-04
# get google material design icons
# see https://dev59.com/Vl4b5IYBdhLWcg3wxUVi
tmp=/tmp/icons
index=$tmp/index.html
mkdir -p $tmp
cd $tmp
if [ ! -d material-design-icons ]
then
  git clone https://github.com/google/material-design-icons
fi
cat << EOF > $index
<html>
  <head>
    <head>
    <body>
      <h1>Google Material Design Icons</h1>
EOF
for icon in `find . -name *.svg | grep production | grep 48`
do
    svg=`basename $icon .svg`
    category=`echo $icon | cut -f3 -d '/'`
    echo $category $svg.svg
    mkdir -p $tmp/$category
    cp $icon $tmp/$category
    echo "    <img src='"$icon"' title='"$category $svg"' >" >> $index
done
cat << EOF >> $index
  </body>
</html>
EOF

2
甜蜜的脚本。由于这是该存储库的一种临时用途,建议改为使用git clone --depth=1获取浅克隆。下载速度会更快。 - mbac32768

4

我觉得这个链接对我很有帮助。

https://dev.materialdesignicons.com/getting-started/android

可以使用gradle implementation。

dependencies {
    implementation 'net.steamcrafted:materialiconlib:1.1.5'
}

在添加gradle依赖之后,您可以按照以下方式创建菜单项。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" <!-- important, you'll have to include this to use the custom xml attributes -->
    xmlns:tools="http://schemas.android.com/tools" >

    <!-- example of a menu item with an icon -->
    <item
        android:title="Disable Wifi"
        app:showAsAction="always"
        app:materialIcon="wifi_off" <!-- This sets the icon, HAS AUTOCOMPLETE ;) -->
        app:materialIconColor="#FE0000" <!-- Sets the icon color -->
    />

</menu>

1
文档中,我发现了这个有用的行:
import androidx.compose.material.Icon

Icon(Icons.Rounded.Menu, contentDescription = "Localized description")

这很简单,而且非常有效!


1
通过右键单击资源或可绘制文件夹,然后选择新建 -> 矢量资源,将图标添加到项目中是很酷的,但如果您想添加100个图标,那么手动操作是不可行的。更简单的解决方案是将扩展材料图标库添加到您的项目中,然后通过 Icons.Default.icon_nameIcons.Filled.icons_name 等方式引用所需的图标。 为此,您需要将扩展的材料图标依赖项添加到您的模块级 build.gradle 文件中。
implementation "androidx.compose.material:material-icons-extended:$compose_ui_version"

请注意,这个库非常大(约34MB)。官方文档中提到:

一个独立的库,androidx.compose.material:material-icons-extended,包含了完整的Material图标集。由于这个库非常庞大,请确保在将此库作为直接依赖项包含时,使用R8/Proguard来剥离未使用的图标。

R8和Proguard都是可以用来从您的应用的APK文件中剥离未使用的图标的工具。R8是Proguard的继任者,通常被认为在剥离未使用的代码方面更加有效。
要使用R8来剥离未使用的图标,您需要将以下行添加到您的应用的build.gradle文件中:
buildFeatures {
    minifyEnabled true
    shrinkResources true
}

minifyEnabled属性告诉R8对您的应用代码进行缩小处理,shrinkResources属性告诉R8去除未使用的资源,包括图标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接