2016-03-21 11 views
9

Hallo Ich versuche, einen Hintergrund drawable für meinen Splash-Screen zu erstellen, die ich in Thema selbst einstellen werde. Aber das Bitmap-Zeichen, das verwendet wurde, um in der Mitte zu bleiben, wird immer länger und ich kann nicht erkennen, wie es normal bleibt. Unten ist mein ziehbar Code: splash_screen_bg.xmlErstellen von Hintergrund mit Layern-Liste zeichnend, Symbol wird gestreckt

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

Hier Code ist, wo ich diesen ziehbar als Hintergrund einer Tätigkeit am Einstellung:

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

Also hier die Bitmap ziehbar ty_logo ist ein png wird in meinem Handy gestreckt. Da es keine scaleType Option mit bitmapDrawable gibt weiß ich nicht, wie man damit umgeht.

+1

Haben Sie irgendeine Antwort auf diese Frage gefunden? Ich habe das gleiche Problem und kann keine Lösung finden. – baal

+0

hat die Lösung noch nicht bekommen. – himanshu1496

Antwort

2

Sie können Bitmap in ScaleDrawable<scale> und ScaleDrawable in LayerListDrawable einfügen.

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

Ich habe versucht, dieses zu addieren, aber ty_logo ist jetzt nicht einmal sichtbar. – himanshu1496

4

gravity auf Ihre Bitmap center eingestellt hinzufügen.

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

I Hoffnung, dass ty_logo geeigneter Pixel ist, und Sie haben verschiedene Pixel für verschiedene Geräte Bildschirme vorgesehen (ldpi, mdpi, hdpi, xhdpi, etc). Wenn nicht, durch diese Antwort auf ein ähnliches Problem gehen finden Sie sich in: Resize images in bitmap in xml

Andernfalls kann dies leicht, wenn Ihre Zielversion ist für API 23 als <item> hat Breite gelöst werden, Höhe, Schwerkraft Attribute für sie bereitgestellt.

Und wenn nicht, sollte der folgende Code funktionieren, mit Schwerkraft Attribut für Bitmap. Dies geschieht wiederum unter der Annahme, dass Ihr Logo nicht mehr Pixel hat als die Auflösung der Geräte.

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