Warum ist die Breite / Höhe der Zeichen in ImageView falsch?

7

Sollte einfach sein.

Wenn ich image.getDrawable().getIntrinsicWidth() ziehe, erhalte ich einen Wert, der größer ist als die Quellbildbreite. Es ist X-Koordinate gibt 2880 statt 1920 zurück, die 1,5 mal zu groß ist?

Ich habe mich gefragt, ob das ImageView einen scaleType von "center" hat, aber laut Dokumentation :

  

"Zentrieren Sie das Bild in der Ansicht, , führen Sie jedoch keine Skalierung durch. "

Hier ist die Quelle:

%Vor%     
Graeme 30.06.2011, 14:32
quelle

4 Antworten

19

Sie haben gesagt, dass der Zeichensatz aus Ihrem /res Ordner stammt. In welchem ​​Ordner ist es?

  • /res/drawable
  • /res/drawable-mdpi
  • /res/drawable-hdpi

    usw.

Und wie ist die Dichte des Geräts, auf dem Sie testen? Ist es ein Nexus S mit einer allgemeinen Dichte von 240 dpi? Wenn sich Ihre Quelle im Ordner " drawable-mdpi " befindet und Sie auf einem 240-dpi-Gerät testen, skaliert das Android-System den Zeichenbereich automatisch um einen Faktor von 1.5 , sodass die physische Größe mit der Grundlinie übereinstimmt Gerätedichte bei 160 dpi.

Wenn Sie getIntrinsicWidth() aufrufen, wird die Größe zurückgegeben, die das Zeichen für haben soll, nachdem Android das Zeichen skaliert hat. Sie werden feststellen, dass 2880 = 1920 * 1.5

Wenn Sie den Zeichensatz in /res/drawable platziert haben, behandelt das Android-System diese Zeichnungsdateien wie für mdpi-Geräte, also das Upscaling in Ihrem Nexus S. Wenn dies für hdpi-Bildschirme gedacht war und Sie nicht möchten, dass es upscale, dann versuchen Sie es es in drawable-hdpi

    
Tony Chan 08.07.2011, 18:19
quelle
3

Haben Sie versucht, Höhe und Breite nach Dichte zu multiplizieren:

%Vor%

Können Sie in Ressourcen zeichnen oder aus dem Internet herunterladen? Wenn es heruntergeladen wird, müssen Sie ihm die Dichte geben:

%Vor%     
Climbatize 01.07.2011 18:24
quelle
0

Überprüfen Sie, ob der Wert der angezeigten Größe zurückgegeben wird. Dies ist nicht die tatsächliche Größe. Beispielsweise wird eine 50x320px-Banneranzeige auf einem herkömmlichen 800x480-Telefon als 75x480 angezeigt.

Sollte in der Lage sein, gegen Dichte (oder Ihre Augen!) zu vergleichen, um zu sehen, was es tut.

    
yep 30.06.2011 14:41
quelle
0

Das wird wohl nichts sein, um mit dem Problem, das Sie haben soll, aber nur für Kicks Ich werde es vorschlagen sicher sowieso sein:? Sie android:minSdkVersion in Ihrem Manifest Angabe

Der einzige Grund, warum ich das erwähne, ist, weil ich eine Zeit lang nicht in einem Projekt gearbeitet habe, und ich habe gelernt, dass dies die Bildschirmdichte aufhebt und alle möglichen seltsamen Probleme verursacht.

    
Trevor 30.06.2011 16:27
quelle

Tags und Links