2017-08-28 75 views
0

我想在StatusBar下显示天气状况和温度图标。Android如何在使用gradle构建期间从外部文件夹添加drawable

我已经产生了几千,我将设置NotificationBuilder为小图标的所有可能的组合,因为它只能与绘制资源工作(你必须指定res id

不过,我不知道想要在我的可绘制文件夹中绘制所有可绘制的文件以保持其清洁。

此外,我不希望Android Studio看到可绘制的,因为它开始滞后。

在构建应用程序期间是否可以从某些外部存储添加这些图标?

注:

main.res.srcDirs +=选项不会帮助,因为AndroidStudio将展示他们绘制文件夹下。

对我来说,在开发过程中,Android Studio不会看到R ids用于相应的可绘制对象,因为我使用Resources.getIdentifier(resurseName, "drawable", appPackageName)以获得标识。

+0

“因为它只能用drawable res工作” - 或者,将您的应用程序限制为Android 7.0+,您可以在其中使用Icon。或者,将此特定功能限制为Android 7.0+,为旧设备执行其他操作。 – CommonsWare

+0

我不想限制某些用户的功能。这将是非常好的找到Android 4.4 + –

+0

解决方法有什么办法如何在构建期间移动drawable(也许合并资源)? –

回答

1

可以节省您大量的工作和资源文件,如果你使用Notification.Builder#setSmallIcon(int icon, int level)方法,例如考虑XML资源文件:

RES /绘制/ sun.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/icon_sun"/> 
    <item> 
     <level-list> 
      <item android:maxLevel="0" android:drawable="@drawable/minus20"/> 
      ... 
      <item android:maxLevel="60" android:drawable="@drawable/plus40"/> 
     </level-list> 
    </item> 
</layer-list> 

现在你可以调用setSmallIcon(R.drawable.sun, level)其中level == 0表示-20度,level == 60表示40度,如果您有X天气条件(太阳,云,雨,雪,风暴等)和Y温度,则需要X xmls + X pngs + Y pngs = 2 * X + Y文件,在您的解决方案中,您需要X * Y文件

相关问题