2016-09-28 1 views
0

J'ai une image prédécoupée i.e Une image de base et plusieurs couches transparentes de l'image de base. J'essaye d'ajouter l'image de calque au dessus de l'image de base pour sélectionner la couche et appliquer la couleur différente dessus.Evénement tactile sur l'image de couche mélangée Android

J'ai essayé la méthode suivante pour y parvenir mais je n'ai pas pu terminer.

  1. ImageView - Je chevauche une image avec une image de couche transparente. Il montre l'image fusionnée mais l'événement tactile détecte l'ID d'image qui se chevauche finalement. Parce que je dessine l'image avec le parent de remplissage, toute l'image de la couche est également la même

  2. Layer Drawable - Il ne peut permettre que des images dessinables, mais mon cas d'utilisation est de charger la prédécoupe de la galerie ou d'une autre ressource. Même je ne peux pas sélectionner la couche au toucher.

  3. Bibliothèque GPUImage - L'image ne montre pas l'image complète.

Cordialement Sathiya

Répondre

0

Prolonger la classe View, faire la fonction onDraw() dessiner ce que vous voulez dessiner. La fonction onTouchEvent() implémente les événements tactiles. Ce que vous essayez de faire n'est pas inclus dans une vue déjà faite, mais il est assez facile de faire une vue. Il suffit de dessiner les bitmaps sur la toile dans le bon ordre avec les bonnes peintures avec la bonne transparence. Vous finissez par faire cela en ajoutant des bitmaps à la toile dans n'importe quel endroit et n'importe quel ordre.

+0

Pouvez-vous partager un exemple de code. J'ai essayé LayeredImageView mais je n'ai pas pu obtenir l'id imageview dynamique. – user2508399

+0

C'est simplement le code pour dessiner un bitmap appliqué plusieurs fois. Vous pouvez le boucler ou simplement en appliquer un certain nombre. Appliquez juste ce truc sur la toile. canvas.drawBitmap (bitmap, paint) et faites-le pour chacun des bitmaps pertinents dans les endroits appropriés. – Tatarize

+0

@Override protected void onDraw (Toile canvas) { super.onDraw (canvas); Matrix matrix = getImageMatrix(); if (matrice! = Null) { int numLayers = mLayers.size(); pour (int i = 0; i user2508399