2016-03-21 13 views
9

Ciao Sto cercando di creare uno sfondo drawable per la mia schermata iniziale che imposterò nel tema stesso. Ma il drawable bitmap usato per tenere al centro si sta allungando e non sono in grado di capire come mantenerlo normale. Qui di seguito è il mio codice disegnabile: splash_screen_bg.xmlcreazione del background drawable usando layer-list, icona che si allunga

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient 
      android:angle="360" 
      android:centerColor="@color/colorAccentXDark" 
      android:endColor="@color/Black" 
      android:gradientRadius="500dp" 
      android:startColor="@color/colorAccentXDark" 
      android:type="radial" 
      android:useLevel="false" /> 
    </shape> 
</item> 
<item 
    android:bottom="50dp" 
    android:top="50dp"> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:innerRadius="500dp" 
     android:innerRadiusRatio="1" 
     android:shape="oval"> 
     <gradient 
      android:angle="360" 
      android:centerColor="@color/colorAccentXDark" 
      android:endColor="@color/colorAccentXDark" 
      android:gradientRadius="400dp" 
      android:startColor="@color/colorAccent" 
      android:type="radial" 
      android:useLevel="false" /> 
    </shape> 
</item> 
<item android:gravity="center"> 
    <bitmap android:src="@drawable/ty_logo" /> 
</item> 
</layer-list> 

Ecco codice dove io pongo questa drawable come sfondo di un'attività:

<style name="TYTheme" parent="SearchActivityTheme.NoActionBar"> 
    <item name="colorPrimaryDark">@color/colorAccentXDark</item> 
    <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> 
    <item name="android:windowBackground">@drawable/splash_screen_bg</item> 
</style> 

Quindi, ecco la bitmap drawable ty_logo è un png si sta allungando nel mio telefono. Poiché non esiste l'opzione scaleType con bitmapDrawable, non so come gestirlo.

+1

Hai trovato una risposta a questa domanda? Ho lo stesso problema in questo momento e non riesco a trovare una soluzione. – baal

+0

non ha ancora ottenuto la soluzione. – himanshu1496

risposta

2

Puoi avvolgere bitmap all'interno ScaleDrawable<scale> e utilizzare ScaleDrawable all'interno LayerListDrawable.

<item android:gravity="center"> 
    <scale android:drawable="@drawable/ty_logo" 
     android:scaleHeight="80%" 
     android:scaleWidth="80%" > 
    </scale> 
</item> 
+9

Ho provato ad aggiungere questo ma ora ty_logo non è nemmeno visibile. – himanshu1496

4

Aggiungi gravity al bitmap impostato center.

<item android:gravity="center"> 
    <bitmap android:src="@drawable/ty_logo" 
      android:gravity="center" /> 
</item> 
3

I speranza che ty_logo è di pixel idonei e hanno fornito pixel dell'immagine diversa per varie schermate del dispositivo (ldpi, mdpi, hdpi, xhdpi, etc). Se no, passare attraverso questa risposta a un problema simile si trova in: Resize images in bitmap in xml

In caso contrario, questo può essere facilmente risolto se la bersaglio versione è per API 23 come <item> ha larghezza, altezza, gravità attributi forniti per loro.

E in caso contrario, il seguente codice dovrebbe funzionare, utilizzando l'attributo gravità per bitmap. Di nuovo, questo presuppone che il tuo logo non abbia più pixel della risoluzione dei dispositivi.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
... 

<item> 
     <bitmap android:src="@drawable/ty_logo" 
     android:gravity="center" /> 
</item> 

... 
</layer-list>