2012-05-03 8 views
17

Wir verwenden 9png hauptsächlich, um die Größe der apk zu reduzieren. Aber ich stehe vor einem besonderen Problem. Ich bin mir nicht sicher, in welchem ​​Ordner ich die 9png einlegen muss. Ich habe sie in den HDPI-Ordner gelegt. Da Android "clever" ist, sieht es so aus, als ob ich die App in einem MDPI-Telefon verwende, es "skaliert" den 9png, der verrückte Effekte erzeugt. Ich hatte kein größeres Problem, bis ich es in Galaxy Note versuchte. Sieht so aus, als wäre das 9png von HDPI genommen und skaliert worden (Note hat 800x1280) und es hat seltsame Effekte erzeugt.Welcher Ordner für 9png Bilder?

  • Also was ist der richtige Ort, um die 9pngs zu setzen?
  • Wie man Android-System nicht zu "skalieren" 9pngs basierend auf dem Ordner, in dem es eingefügt wird?

Antwort

14

Nach Romain Guy answer auf Google Gruppen:

Das Verhalten von 9-Patch ist nicht definiert, wenn geschrumpft. In der Praxis sehen Sie Überlappungen der verschiedenen Abschnitte des 9patch. Tun Sie es nicht :)

Von dem, was ich in meinen Projekten bemerkte, ist ein 9PNG abgespeckte wie jede normale PNG, so dass ich in die Regel zu unserem Designer anfordernden die gesamte Reihe von Bildern für ldpi, mdpi, hdpi und xhdpi, und ich verwandle sie alle in 9 Flecken.

Das, es sei denn, es gibt eine sehr einfache 9patch, wie eine einfache Schaltfläche Hintergrund, das macht keinen Unterschied, wenn gestreckt oder geschrumpft, so dass ich es normalerweise in den regulären drawable Ordner.

0

Legen Sie einfach die 9png in Ihrem HDPI-Ordner.

Wenn der Effekt in Ihrem Galaxy Note seltsam aussieht.

Bitten Sie den Designer, Ihnen eine neue 9png-Datei für das XHDPI zu geben. und dann die neue Datei in den Ordner XHDPI legen.

8

Ich hatte ein ähnliches Problem mit einem neun Patch-Bild: wenn ich es in den res/drawable Ordner legte, funktionierte es nicht auf einem ldpi Bildschirm (es verzerrte das Bild und verlor die Transparenz).

Die Lösung für mich war es in den Ordner res/drawable-nodpi zu legen. Die Dokumentation besagt:

Dies kann für Bitmap-Ressourcen verwendet werden, die nicht skaliert werden soll, um die Gerätedichte zu entsprechen.

+2

Dies funktioniert für Assets, die keine dichteabhängigen Features wie abgerundete Ecken enthalten. –

Verwandte Themen