Android - Immagine Button Scala

? mFeinstein @ | Original: StackOverFlow
---

Hi,

Sto cercando di installare un immagine all'interno di un ImageButton per il test, ma il modo in cui la ImageButton comporta non è come previsto .

Inizialmente, ho fatto un 988x89 pixel PNG immagine e messo dentro una ImageButton, che è in un 7inches 1024x600 pixel dello schermo emulato . Il ImageButton è 988dp x 89dp, so dp non è la stessa di pixel, ma a favore della risoluzione che prevede l'immagine in scala si ragionevolmente ad occupare la maggior parte del ImageButton . Inoltre ho cambiato px invece dp per la prova e mi ha fatto alcuna differenza .

Ma invece il ImageButton fatta l'immagine al suo interno molto piccolo ( le linee blu sono i ImageButton limiti e la linea verde è un'indicazione Allinea al centro ) .

Android - Immagine Button Scala

così domanda # 1 : Perché il ImageButton fanno un'immagine grande come questo così piccolo, quando si potrebbe riempire la maggior parte dello schermo, anche con la dimensione ImageButton essere molto ampia ?

Quindi, per superare questo, ho selezionato adjustViewBounds che ha fatto alcuna differenza, a tutti, che porta domanda # 2 : Perché ? Non è la regolare visualizzazione limiti supposti per regolare i limiti di visualizzazione ?

Il codice finora è :

<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" />

Così poi ho cambiato scaleType a fitCenter e l'immagine divenne :

Android - Immagine Button Scala

Che è strano anche per me, dal momento che il ImageButton ha lo stesso formato dell'immagine, quindi ci si aspetta che si adatti al 100 %, ma non è il montaggio (c'è una lacuna nella larghezza in entrambi i lati dell'immagine ) .

Così poi ho cambiato scaleType a fitXY e ho ottenuto il mio risultato finale :

Android - Immagine Button Scala

Che sembra essere l'immagine previsto dopo tutto ( confrontando l'immagine da fitXY per l'immagine di fitCenter in Photoshop mostra che il fitCenter immagine è leggermente ovale, ma non può essere visualizzata qui, che si prevede dal la larghezza non corrisponde l' immagine come l'altezza fa ) .

Quindi la mia domanda generale è ( # 3 ) : Qual è il modo giusto per il montaggio di un'immagine in Android, e di aspettarsi di avere la sua dimensione normale nella schermata, e perché è la scala in modo disordinato e sono io che faccio male ?

So che ci sono problemi e dimensioni dello schermo dp ed ecc, ma la scala non si comporta in modo controllato, fitCenter rende l' ovale immagine, e fitXY è troppo dipendente da me impostare il giusto rapporto immagine su XY, quindi mi chiedo se sto facendo qualcosa di sbagliato e come si suppone che sia la strada giusta .

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 Risposta

1Wasim Ahmed @

Su attività Creat..you può ottenere la risoluzione dello schermo ... e ridimensionare l'immagine in base alla schermata Larghezza e Height..and impostare l' immagine ..nel questo modo il vostro rapporto sarà uguale su tutti i tipi di dispositivi ..

per ridimensionare le immagini .. : 1. Ottenere larghezza e l'altezza dello schermo Immagine 2.Resize tronchi con la risoluzione dello schermo 3.Impostare immagine alla vista

2Kailas @

Questo è un buon tentativo, si sta cercando di approfondire le implementazioni Android .

Ans #3:

In un primo momento fornendo esatta dimensione come l'altezza e la larghezza non è una buona pratica in Android . Se volete sapere perché, la ragione sarebbe semplicemente cercherà di spremere / espandere l'immagine alla dimensione specificata da voi in altezza e larghezza params . Sempre wrap_content è il parametro preferito in modo che il sistema operativo si regola automaticamente a seconda della size.Hence schermo è necessario modificare come :

<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 :

Perché il ImageButton rende un'immagine grande come questo così piccolo, quando si potrebbe riempire la maggior parte dello schermo, anche con la dimensione ImageButton essendo molto ampia ?

La risposta è simile al sopra menzionato . La dimensione dell'immagine sarà molto minore rispetto a quella del sistema operativo Android calcolata a seconda della dimensioni citate, prendendo risoluzione del dispositivo in considerazione . Utilizzare il sito http://coh.io/adpi/ per renderlo semplice da calcolare . Prenda sempre il MDPI standard . Il supporre la dimensione dell'immagine è 988X89 in MDPI, sarà :

Android - Immagine Button Scala Ora, è come se si sta tentando di visualizzare un'immagine di 988px X 89px su uno schermo xhdpi dove il sistema operativo Android calcolato le dimensioni dell'immagine come 1976px X 178px, che è il modo più grande la dimensione data immagine di 988px X 89px . è per questo che si ottiene piccola immagine con la maggior parte bianca zona .

Come per correggerlo ? Passare attraverso le specifiche di Android per supportare diverse schermate densità . questo richiede di progettare immagini appositamente per hdpi, MDPI, xhdpi e metterli in apposite cartelle :

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

Rif : http://developer.android.com/training/multiscreen/screendensities.html per maggiori informazioni