9 votes

Est-il possible d'utiliser drawable+color comme arrière-plan ?

J'ai un motif opaque (10 % d'opacité) et je dois le combiner avec de la couleur.

Est-il possible de définir la couleur d'arrière-plan d'une image ?

24voto

ABentSpoon Points 2379

Bien sûr, il suffit d'utiliser un LayerListDrawable.

Quelque chose comme :

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#FF00ffff" />
        </shape>
    </item>
    <item>
         <bitmap 
             android:src="@drawable/your_tiled_drawable"
             android:tileMode="repeat" />
    </item>
</layer-list>

Enregistrez cela dans votre res/drawables et l'utiliser comme arrière-plan.

Malheureusement, si votre application est plus compliquée, il arrive que le tileMode soit désactivé sans raison apparente. Dans ce cas, vous devrez réintroduire le mode tuile dans Java.

J'ai l'habitude de le définir en xml, puis de faire quelque chose comme :

View v = findViewById(R.id.my_view);
LayerDrawable lld = (LayerDrawable) v.getBackground();
BitmapDrawable tiled = (BitmapDrawable) lld.getDrawable(1);
tiled.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);

0voto

userSeven7s Points 14480

Oui.

Vous pouvez utiliser ImageView . Définissez sa couleur d'arrière-plan et définissez l'image semi-transparente comme source.

Si vous voulez faire cela avec une mise en page, étendez cette mise en page et dans la fonction overridden onDraw(), dessinez la couleur d'arrière-plan et mélangez-la avec l'image semi-transparente.

Paint p = new Paint();
p.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X