web-dev-qa-db-fra.com

Utilisation de la liste des calques pour afficher des images dessinables

Android studio 2.0 aperçu 3b

Bonjour,

J'ai créé la mise en page suivante que je souhaite utiliser comme arrière-plan pour mon application. J'utilise le layer-list et je souhaite afficher un bol de pois à 2 endroits. Tout semble correct dans l'aperçu, mais lorsque je lance sur Genymotion ou sur des appareils chinois bon marché, l'image s'étend sur l'écran. Cependant, sur le Android AVD, tout va bien et sur mon Nexus 5 (appareil réel) tout fonctionne bien.

C'est ce que je veux et c'est ainsi qu'il s'affiche dans l'AVD et le Nexus 5. Comme vous pouvez le voir, il n'y a pas de problème.

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape>
            <gradient
                Android:centerX="0.5"
                Android:centerY="0.3"
                Android:endColor="#08e25b"
                Android:gradientRadius="300dp"
                Android:startColor="#b7e9c9"
                Android:type="radial" />
        </shape>
    </item>

    <item
        Android:width="48dp"
        Android:height="48dp"
        Android:left="350dp"
        Android:top="400dp">
        <bitmap Android:src="@drawable/peas" />
    </item>

    <item
        Android:width="68dp"
        Android:height="68dp"
        Android:drawable="@drawable/peas"
        Android:left="-20dp"
        Android:top="480dp" />
</layer-list>

J'ai placé peas.png fichier dans drawable-nodpi et ajoutez simplement la largeur et la hauteur dans le layer-list

Et quand je cours sur Genymotion et certains appareils intelligents bon marché, j'obtiens ce qui suit: enter image description here

Just quick summary.

Nexus 5 real device and AVD devices works ok
Genymotion and cheap smart devices doesn't display correctly

Je suis juste confus dans ce que je dois croire. J'ai également essayé d'utiliser le bitmap pour voir si cela ferait une différence.

Merci beaucoup pour toutes suggestions.

27
ant2009

Mettez à jour votre liste de calques comme suit

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

<item>
    <shape>
        <gradient
            Android:centerX="0.5"
            Android:centerY="0.1"
            Android:endColor="#08e25b"
            Android:gradientRadius="300dp"
            Android:startColor="#b7e9c9"
            Android:type="radial" />
    </shape>
</item>
<item
    Android:width="48dp"
    Android:height="48dp"
    Android:bottom="68dp"
    Android:right="-20dp">
    <bitmap
        Android:gravity="bottom|right"
        Android:src="@drawable/peas" />
</item>
<item
    Android:height="68dp"
    Android:left="-20dp"
    Android:bottom="-20dp"
    Android:width="68dp">
    <bitmap
        Android:gravity="bottom|left"
        Android:src="@drawable/peas" />
</item>
34
SachinS

Placez vos images dans tous les dossiers de densité (xxhdpi, xhdpi, hdpi).

Le système sélectionne les ressources d'image en fonction de la résolution de l'écran.

10
Akhil Jayakumar