Android - Bild Taste -Skala

? mFeinstein @ | Original: StackOverFlow
---

Hi,

Ich versuche, ein Bild innerhalb eines ImageButton für die Prüfung, sondern die Art und Weise der ImageButton verhält sich nicht wie erwartet passen.

zunächst habe ich ein 988x89 Pixel PNG- Bild und legte sie innerhalb eines ImageButton, was zu einer 7inches 1024x600 Pixel emulierten Bildschirm ist . Die ImageButton ist 988dp x 89dp, ich weiß, dp ist nicht dasselbe wie Pixel, aber für diesen Entschließungsantrag ich erwartet hatte das Bild, um sich angemessen zu skalieren, um die meisten der ImageButton zu besetzen. Auch habe ich geändert, um Pixel statt dp für die Prüfung und es machte keinen Unterschied .

Doch statt der ImageButton machte die Bild darin sehr klein ( die blauen Linien sind die ImageButton Grenzen und die grüne Linie ist ein Zentrum align Anzeige) .

Android - Bild Taste -Skala

so Frage 1: Warum hat die ImageButton ein Bild machen, wie groß, wie dieser so klein, wenn es könnte fast den gesamten Bildschirm zu füllen, auch mit dem ImageButton Größe sehr breit?

Also, dies zu überwinden, wählte ich adjustViewBounds, die keinen Unterschied gemacht, überhaupt, was bringt Frage # 2: Warum ? Ist das nicht der Ansicht anpassen Grenzen soll die Ansicht Grenzen einstellen?

Der Code ist bis jetzt :

<ImageButton
        android:layout_width="988dp"
        android:layout_height="89dp"
        android:id="@+id/ibTest"
        android:src="@drawable/image_top_test"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:layout_below="@+id/hlTopBar"
        android:background="#00000000" />

So später wechselte ich scaleType auf fitCenter und das Bild wurde :

Android - Bild Taste -Skala

Welches ist seltsam für mich als gut, da die ImageButton hat die gleiche Seitenverhältnis wie das Bild, so würde ich erwarten, dass es zu 100% fit, aber es ist nicht passend ( gibt es eine Lücke in der Breite auf beiden Seiten des Bildes ) .

So später wechselte ich scaleType auf fitXY und ich meine Endergebnis bekam :

Android - Bild Taste -Skala

Welche scheint das erwartete Bild schließlich ( Vergleich des Bildes durch fitXY, um das Bild als fitCenter in Photoshop zeigt, dass die fitCenter Bild ist leicht oval, kann jedoch hier nicht gezeigt werden, die seit dem erwartet wird, die Breite nicht zum Bild passende als die Höhe der Fall ist) .

Also meine Frage ist, allgemeine (# 3) : Was ist der richtige Weg für die Montage eines Bildes in Android, und zu erwarten, dass sie es ist normaler Größe auf dem Bildschirm haben, und warum ist die Skalierung so chaotisch und mache ich etwas falsch gemacht?

Ich weiß, es gibt eine Bildschirmgröße von Themen und dp und usw., aber die Skalierung nicht in einer kontrollierten Art und Weise zu verhalten, fitCenter macht das Bild Oval und fitXY ist zu viel hängt von mir Setzen des rechten Bildverhältnisauf XY, so dass ich frage mich, ob ich mache etwas falsch und wie es soll der richtige Weg sein .

Final XML code:

<ImageButton
        android:layout_width="988dp"
        android:layout_height="89dp"
        android:id="@+id/ibTest"
        android:src="@drawable/image_top_test"
        android:layout_centerHorizontal="true"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:layout_below="@+id/hlTopBar"
        android:background="#00000000"
        android:scaleType="fitXY" />
---

Top 5 Antwort

1Wasim Ahmed @

Am Aktivität Creat..you können die Bildschirmauflösung zu erhalten ... und die Größe des Bildes entsprechend der Bildschirm Widht und Height..and stellen Sie die Bild ..In diese Weise Ihr Verhältnis wird diese auf jeder Art von Geräten zu sein ..

um die Größe von Bildern .. : 1. Bildschirm Breite und Höhe erhalten 2.Resize Bild acording Bildschirmauflösung 3.Set Bild zur Ansicht

2Kailas @

Das ist ein guter Versuch, Sie versuchen, tiefer in die Android- Implementierungen gehen werden .

Ans #3:

Zunächst bietet genaue Größe wie Höhe und Breite ist keine gute Praxis in Android. Wenn Sie wissen wollen, warum wollen, wäre der Grund sein, einfach wird es versuchen, Squeeze / erweitern das Bild an die von Ihnen in der Höhe und Breite params angegebenen Größe . Immer wrap_content ist der bevorzugte Parameter, so dass das Betriebssystem automatisch, abhängig von der Bildschirm size.Hence Sie ändern müssen, wie anzupassen :

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ibTest"
    android:src="@drawable/image_top_test"
    android:layout_centerHorizontal="true"
    android:adjustViewBounds="true"
    android:cropToPadding="false"
    android:layout_below="@+id/hlTopBar"
    android:background="#00000000"
    android:scaleType="fitXY" />

Ans #1 :

Warum wird die Image machen ein Bild so groß wie dieser so klein, wenn es könnte fast den gesamten Bildschirm zu füllen, auch mit der Imagegrößesehr breit ?

Die Antwort ist, ist ähnlich zu der oben genannten . Ihre Bildgröße wird viel weniger als, dass das Android-Betriebssystem berechnet je nach Größe erwähnt unter Geräteauflösung berücksichtigt werden . Verwenden Sie die http://coh.io/adpi/ Website, um es einfach zu berechnen . Nehmen Sie immer die MDPI als Standard. Das nehme Ihre Bildgröße 988X89 in MDPI, wird es :

Android - Bild Taste -Skala Nun ist es, als ob Sie versuchen, ein Bild von 988px X 89px auf xhdpi Bildschirm, wo das Android-Betriebssystem berechnet die Bildgröße als 1976px X 178px, die Art und Weise größer als Ihre gegebene Bildgröße von 988px X 89px ist zu sehen sind . das ist, warum Sie kleine Bild mit den meisten Bereich weiß zu bekommen.

Wie man es richtig ? Gehen Sie durch die Android -Spezifikationen, um unterschiedliche Dichten Bildschirme unterstützt . Dies erfordert, dass Sie Bilder für hdpi, MDPI, xhdpi spezifisch entwerfen und sie in entsprechenden Ordnern von :

 MyProject/
     res/
       drawable-xhdpi/
           awesomeimage.png
       drawable-hdpi/
           awesomeimage.png
       drawable-mdpi/
           awesomeimage.png
       drawable-ldpi/
           awesomeimage.png

Ref: http://developer.android.com/training/multiscreen/screendensities.html für weitere Informationen