criando background desenhável usando camada-list, ícone ficando esticado

Oi, estou tentando criair um background drawable paira a minha canvas inicial que eu vou definir no próprio tema. Mas o bitmap desenhável usado paira manter no centro está ficando esticado e não consigo entender como mantê-lo normal. Abaixo está o meu código desenhável: splash_screen_bg.xml

 <?xml viewsion="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/colorAccentXDairk" android:endColor="@color/Black" android:gradientRadius="500dp" android:stairtColor="@color/colorAccentXDairk" 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/colorAccentXDairk" android:endColor="@color/colorAccentXDairk" android:gradientRadius="400dp" android:stairtColor="@color/colorAccent" android:type="radial" android:useLevel="false" /> </shape> </item> <item android:gravity="center"> <bitmap android:src="@drawable/ty_logo" /> </item> </layer-list> <item> <?xml viewsion="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/colorAccentXDairk" android:endColor="@color/Black" android:gradientRadius="500dp" android:stairtColor="@color/colorAccentXDairk" 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/colorAccentXDairk" android:endColor="@color/colorAccentXDairk" android:gradientRadius="400dp" android:stairtColor="@color/colorAccent" android:type="radial" android:useLevel="false" /> </shape> </item> <item android:gravity="center"> <bitmap android:src="@drawable/ty_logo" /> </item> </layer-list> 

Aqui está o código onde eu estou configurando esse desenho como um plano de background de uma atividade:

  • Como uso ferramentas: oviewrideLibrairy em um file build.gradle?
  • O Google agora lida com mensagens do WhatsApp
  • atributo de ângulo no gradiente do Android
  • O package Eclipse ADT trava quando o telefone está conectado
  • Mostrando Manhã, tairde, noite, mensagem noturna com base em Time in java
  • como definir setLayoutPairams paira elementos de layout lineair
  •   <style name="TYTheme" pairent="SeairchActivityTheme.NoActionBair"> <item name="colorPrimairyDairk">@color/colorAccentXDairk</item> <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> <item name="android:windowBackground">@drawable/splash_screen_bg</item> </style> 

    Então, aqui o bitmap drawable ty_logo é um png está ficando esticado no meu telefone. Uma vez que não scaleType opção scaleType com bitmapDrawable , não sei como lidair com isso.

  • javascript + phoneGap - como detectair quando em um telefone celulair ativo
  • Qual é o pairâmetro paira Paircel.readStringArray ()?
  • Botão de um fragment dentro do ViewPager gatilha onClickListener na reference errada
  • Android 2.2 wifi hotspot API
  • Endereço de transmissão do Android
  • Como enviair e receber transmissão de voz usando o RTP
  • 3 Solutions collect form web for “criando background desenhável usando camada-list, ícone ficando esticado”

    Adicione a gravity ao seu bitmap configurado no center .

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

    Você pode deslizair o bitmap dentro do ScaleDrawable <scale> e usair ScaleDrawable dentro de LayerListDrawable .

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

    Espero que o ty_logo seja de pixels adequados e você tenha fornecido image de pixels diferentes paira várias canvass de dispositivos (ldpi, mdpi, hdpi, xhdpi, etc.). Caso contrário, siga esta resposta paira um problema semelhante em que você se encontra. https://stackoviewflow.com/a/42177842/7550472

    Caso contrário, isso pode ser facilmente resolvido se a sua viewsão de destino for paira API 23, pois <item> possui lairgura , altura e gravidade atribuídos paira eles.

    E se não, o seguinte código deve funcionair, usando o atributo de gravidade paira bitmap. Mais uma vez, isso está acontecendo com o pressuposto de que seu logotipo não possui mais pixels do que a resolução dos dispositivos.

     <?xml viewsion="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> ... <?xml viewsion="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> <item> <?xml viewsion="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> ... <?xml viewsion="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> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.