Wenn für ldpi, mdpi, hdpi, xhdpi eine auszeichnungsfähige Ressource bereitgestellt wird, muss dieses Zeichen nicht für nodpi bereitgestellt werden?

7

Verstehe ich das richtig:

Alle Android-Geräte fallen in einen dieser 4 Dichte-Buckets: ldpi, mdpi, hdpi, xhdpi.

Wenn also für jede von ihnen eine zeichnende Ressource für Dichten bereitgestellt wird (in jedem dieser Ordner ist ein Zeichensatz oder mit demselben Namen vorhanden), ist es nicht erforderlich, in / res / einen Zeichenbereich mit demselben Namen bereitzustellen. ziehbar oder / res / drawable-nodpi.

Ist mein richtiges Verhalten richtig?

Also, der einzige Grund, warum es sinnvoll ist, die gleiche Ressource in / res / drawbar bereitzustellen, wäre, die App zukunftssicherer zu machen, falls ein neuer Dichte-Bucket für Android OS definiert wird?

>     
mrd 19.05.2012, 20:12
quelle

3 Antworten

24
  

Ist mein richtiges Verhalten richtig?

Durch diesen Absatz sind Sie mehr oder weniger korrekt. Sie gehen mit Ihrem nächsten Absatz ein bisschen "von der Stange":

  

Also, der einzige Grund, warum es sinnvoll ist, die gleiche Ressource in / res / drawbar bereitzustellen, wäre, die App zukunftssicherer zu machen, falls ein neuer Dichte-Bucket für Android OS definiert wird?

>

Nicht wirklich.

Sie fügen Ressourcen in res/drawable/ ein, die an sich skalierbar sind (z. B. ShapeDrawable ). Sie fügen Ressourcen in res/drawable-nodpi/ ein, die aus irgendeinem Grund nicht skaliert werden sollen, um der Gerätedichte zu entsprechen.

Wenn Android einen neuen Dichte-Bucket (z. B. -uhdpi für eine ultrahohe Dichte von 400 dpi) erfindet, wird Android wahrscheinlich das tun, was Sie heute tun, wenn Sie einen Dichte-Bucket überspringen: Skalieren Sie eine Ihrer anderen Editionen. Wenn Sie beispielsweise -xhdpi haben und -hdpi nicht haben, wird Android das -xhdpi image für die Verwendung auf einem -hdpi -Gerät heruntersampeln.

    
CommonsWare 19.05.2012, 20:21
quelle
5

Das ist korrekt, solange Sie in allen 4 Dichte-Buckets, die Sie abdecken, Zeichnungsdaten haben. Eine gängige Praxis ist es, ein benutzerdefiniertes Zeichen in / res / drawbar zu erstellen, das sich auf die Dichte bezieht, die sich über Zeichenblätter erstreckt.

Sie können beispielsweise eine Schaltfläche mit verschiedenen Zuständen für gedrückt und nicht gedrückt halten. Zuerst würden Sie für jede gedrückte und nicht gedrückte Taste eine Zeichnungsdatei mit jeder Dichte einfügen. Dann könnten Sie die folgende button_black_selector.xml in / res / drawables:

erstellen %Vor%     
David Z 19.05.2012 20:28
quelle
0

Wenn Ihre Ressource für alle vier Dichten hinzugefügt wird, haben Sie Recht, dass Sie nicht haben, um das Zeichen zum Ordner /res/drawable hinzuzufügen. Sie haben jedoch richtig geraten, dass es am besten ist, in dem Fall, in dem ein neues Qualifikationsmerkmal angezeigt wird, etwas im Standardordner zu haben. Daher empfehle ich, mdpi-Ressourcen nicht in den Ordner /res/drawable-mdpi , sondern stattdessen in den Standardordner ( /res/drawable/ ) zu stellen. Es ist eine gute Praxis für jede Art von Ressource.

Wie für den Ordner /res/drawable-nodpi ist es ein spezieller Ordner, da er Ressourcen enthalten soll, die im Gegensatz zu allen anderen Qualifiern nicht automatisch skaliert werden. Daher verwenden Sie normalerweise entweder den /res/drawable-nodpi Ordner oder verwenden ihn gar nicht.

    
Malcolm 19.05.2012 20:22
quelle

Tags und Links