2017-08-28 1 views
0

hinzufügt Ich möchte Wetterzustand- und -temperaturikone unter StatusBar zeigen.Android, wie man drawables von externem Ordner während des Errichtens unter Verwendung des Gradle

Ich habe ein paar Tausende von allen möglichen Kombinationen erzeugt, die ich als kleines Symbol von NotificationBuilder gesetzt werden, weil es nur mit ziehbar res arbeiten kann

jedoch (Sie res id angeben müssen), kann ich nicht Ich möchte alle Zeichensätze in meinem zeichnenden Ordner haben, um sie sauber zu halten.

Auch ich möchte nicht, dass Android Studio, dass Zeichnungsobjekte zu sehen, weil es beginnt zu verzögern.

Ist es möglich, diese Symbole während der Erstellung der App aus einem externen Speicher hinzuzufügen?

HINWEIS:

main.res.srcDirs += Option wird nicht helfen, da Android Studio sie unter dem ziehbar Ordner zeigen.

Es ist in Ordnung für mich, dass während der Entwicklung Android Studio R ids für entsprechende Zeichnungsdateien nicht sehen, weil ich Resources.getIdentifier(resurseName, "drawable", appPackageName) verwenden, um ID zu erhalten.

+0

"weil es nur mit Zeichen res funktionieren kann" - oder, beschränken Sie Ihre App auf Android 7.0+, wo Sie ein 'Icon' verwenden können. Oder schränken Sie diese spezifische Funktion auf Android 7.0+ ein und machen Sie etwas anderes für ältere Geräte. – CommonsWare

+0

Ich möchte die Funktion für einige Benutzer nicht einschränken. Es wäre toll, Workaround für Android 4.4 + –

+0

zu finden gibt es eine Möglichkeit, wie die Drawables während des Builds verschoben werden (möglicherweise Zusammenführen von Ressourcen)? –

Antwort

1

Sie viele Ihrer Arbeit und Ressourcen-Dateien speichern können, wenn Sie Notification.Builder#setSmallIcon(int icon, int level) Methode verwenden, beispielsweise die XML-Ressource-Datei betrachten:

res/ziehbar/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> 

Sie jetzt kann setSmallIcon(R.drawable.sun, level) anrufen wo level == 0 bedeutet -20 Grad und level == 60 bedeutet 40 Grad, so, wenn Sie X Wetterbedingungen (Sonne, Wolken, Regen, Schnee, Sturm, etc) und Y Temperaturen haben Sie X Xmls + X png + Y pngs = 2 * X + Y-Dateien, in Ihrer Lösung benötigen Sie X * Y-Dateien

Verwandte Themen