Aller au contenu

Bienvenue sur le forum de FrAndroid,
une communauté fondée par des passionnés pour des passionnés.

Nous sommes une communauté dédiée à Android et tout ce qui gravite autour. Si vous cherchez à tirer le meilleur parti de votre appareil, à le personnaliser, à ajouter des fonctions ou simplement à avoir des réponses à vos questions. Rejoignez-nous. C'est gratuit.

Connexion Inscription

Photo

[résolut] Dessin rectangles android


  • Merci de vous connecter pour répondre
6 réponses à ce sujet

#1
free-tibet

free-tibet

    Membre avancé

  • Membre
  • 52 messages
  • Modèle:asus TF1
salut à tous !

je suis actuellement sur un projet ou je veux travailler sur une image.

je dispose d'une image en fond, j'aimerais recouvrir par dessus une surface noir translucide, mais avec une partie complètement translucide.

Voici une image du résultat final que je souhaiterai avoir:
Image IPB

j'ai bien sur penser à dessiner 4 rectangles tout autour, mais j'espère obtenir une meilleur solution.

Pouvez-vous m'aider ? Merci.

Modifié par free-tibet, 06 December 2012 - 21:06.

blog Trucs & astuces de développement : http://julien-dumortier.fr

Publicité

edelalife

Les meilleures offres du moment :

#2
taz067

taz067

    AndroGénie

  • Membre
  • 8428 messages
  • Lieu400, Bad Request
  • Marque:Samsung
  • Modèle:Galaxy SII // Galaxytab2 (7")
heu il faut que la partie non grisé soit mobile ?
quel taille l'image, quel résolution ?
gif, png jpeg bmp ou flash ?
tu as l'image d'origine ?

Modifié par taz067, 05 December 2012 - 20:11.

Galaxy SII, JB 4.1.2, Free illimité


Besoin d'un espace de stockage cliquez sur le lien ci-dessous
dropbox

 

 

 

Je ne réponds pas aux demandes d'assistance par MP....


#3
free-tibet

free-tibet

    Membre avancé

  • Membre
  • 52 messages
  • Modèle:asus TF1
En fait je veux selectionner une partie d'une image, je dois pouvoir modifier la position et la taille du cadre de sélection.

J'ai finalement utilisé la solution de dessiner 4 rectangles autour de la partie à sélectionner.

Pour ceux que ça intéresse voici le code de la classe que j'ai créé:

public class TrimRectView extends ImageView {
public TrimRectView(Context context) {
  super(context);
}
private int mTotalWidth, mTotalHeight, mStartX, mStartY, mSelectionWidth, mSelectionHeight;

public void updateRect(int startX, int startY, int sizeX, int sizeY, int totalWidth, int totalHeight) {
  mStartX = startX;
  mStartY = startY;
  mSelectionWidth = sizeX;
  mSelectionHeight = sizeY;
  mTotalWidth = totalWidth;
  mTotalHeight = totalHeight;
  this.postInvalidate();
}

public void onDraw(Canvas c) {
  Paint myPaint = new Paint();
  //rectangle gauche
  myPaint.setColor(Color.argb(100, 0, 0, 0));
  c.drawRect(0, 0, mStartX, mTotalHeight, myPaint);
  //rectangle haut
  myPaint.setColor(Color.argb(100, 0, 0, 0));
  c.drawRect(mStartX, 0, mTotalWidth, mStartY, myPaint);
 
  //rectangle droite
  myPaint.setColor(Color.argb(100, 0, 0, 0));
  c.drawRect(mStartX+mSelectionWidth, mStartY, mTotalHeight, mTotalHeight, myPaint);
  //rectangle bas
  myPaint.setColor(Color.argb(100, 0, 0, 0));
  c.drawRect(mStartX, mStartY+mSelectionHeight, mStartX+mSelectionWidth, mTotalHeight, myPaint);
}
}

ensuite il suffit d'ajouter un capteur d'évènement de type "onTouchListener" en appelant updateRect()...
ça fonctionne très bien !

Merci quand même !
blog Trucs & astuces de développement : http://julien-dumortier.fr

#4
free-tibet

free-tibet

    Membre avancé

  • Membre
  • 52 messages
  • Modèle:asus TF1
suite à ça je me suis poser une question. Je me suis toujours dis que j'avais la réponse mais j'aimerais une confirmation.

les classes de type "View" disposent de méthodes "invalidate()" et "postInvalidate()".

je me suis toujours dis ceci:

invalidate() doit être appeler dans le thread principale, le threadUI, ou alors depuis un thread lancer depuis "runOnUiThread()"

postInvalidate() peut être appeler de n'importe quel thread.

cette affirmation est-elle correcte ? Merci !

Modifié par free-tibet, 05 December 2012 - 21:42.

blog Trucs & astuces de développement : http://julien-dumortier.fr

#5
chpil

chpil

    RdS Développement

  • Responsable de section
  • 865 messages
  • LieuRennes
  • Modèle:Nexus 4 - Nexus 7 - Minix X5

invalidate() doit être appeler dans le thread principale, le threadUI, ou alors depuis un thread lancer depuis "runOnUiThread()"

postInvalidate() peut être appeler de n'importe quel thread.

cette affirmation est-elle correcte ? Merci !

C'est exactement ce que dit la documentation, en tout cas ;)

#6
free-tibet

free-tibet

    Membre avancé

  • Membre
  • 52 messages
  • Modèle:asus TF1
ok merci ! ( je ne sais pas mettre résolut)
blog Trucs & astuces de développement : http://julien-dumortier.fr

#7
chpil

chpil

    RdS Développement

  • Responsable de section
  • 865 messages
  • LieuRennes
  • Modèle:Nexus 4 - Nexus 7 - Minix X5
(en éditant le titre de ton premier post)




1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)