J'essaie de superposer deux images dans mon application, mais elles semblent se bloquer sur ma canvas.setBitmap()
ligne. Qu'est-ce que je fais mal?
private void test() {
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.t);
Bitmap mBitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.tt);
Bitmap bmOverlay = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), mBitmap.getConfig());
Canvas canvas = new Canvas();
canvas.setBitmap(bmOverlay);
canvas.drawBitmap(mBitmap, new Matrix(), null);
canvas.drawBitmap(mBitmap2, new Matrix(), null);
testimage.setImageBitmap(bmOverlay);
}
Réponses:
Vous pouvez ignorer la manipulation complexe de Canvas et le faire entièrement avec Drawables, en utilisant
LayerDrawable
. Vous avez le choix entre deux options: vous pouvez soit le définir en XML puis simplement définir l'image, soit configurer unLayerDrawable
dynamiquement dans le code.Solution n ° 1 (via XML):
Créez un nouveau fichier XML Drawable, appelons-le
layer.xml
:Maintenant, définissez l'image en utilisant ce Drawable:
Solution n ° 2 (dynamique):
(Je n'ai pas testé ce code, il peut donc y avoir une erreur, mais ce schéma général devrait fonctionner.)
la source
ok juste pour que vous sachiez qu'il existe un programme qui s'appelle DroidDraw. Cela peut vous aider à dessiner des objets et à les essayer les uns sur les autres. J'ai essayé votre solution mais j'avais une animation sous l'image plus petite, donc cela n'a pas fonctionné. Mais ensuite, j'ai essayé de placer une image dans une mise en page relative qui est supposée être d'abord sous et ensuite, j'ai dessiné l'autre image qui est supposée superposer et tout a très bien fonctionné. Donc RelativeLayout, DroidDraw et vous êtes prêt à partir :) Simple, pas de n'importe quelle sorte de pockery jiggery :) et voici un peu de code pour vous:
Le logo sera au-dessus de l'image d'arrière-plan de shazam.
la source
Vous pouvez utiliser le code ci-dessous pour résoudre le problème ou télécharger la démo ici
Créez deux fonctions pour gérer chacune.
Tout d'abord, la toile est dessinée et les images sont dessinées les unes sur les autres à partir du point (0,0)
En cliquant sur le bouton
Fonction pour créer une superposition.
Lire la suite
la source
C'est une réponse un peu tardive, mais elle couvre la fusion d'images à partir d'URL à l'aide de Picasso
MergeImageView
xml
Exemple
la source
c'est ma solution:
utilisation:
ou
et les résultats:
Mode superposition:
Mode écran:
la source