IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Rotation de vue


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut Rotation de vue
    Bonjour à tous,

    voilà le topo:
    Je souhaite créer une customView qui dessine une flèche allant de la gauche vers la droite. Ensuite, je souhaite attribuer un angle à cette vue, afin que la flèche pivote à partir de sa base de l'angle souhaité (comme pour l'aiguille d'une montre, même si ce n'est pas le but de mon appli).

    D'après ce que j'ai vu, il faut utiliser la méthode canvas.rotate dans le onDraw de ma vue, au moment de dessiner ma flèche. Cela fonctionne partiellement:
    La taille de ma vue est définie aux dimensions de ma flèche, du coup, lors de la rotation du canvas, je ne vois qu'une petite partie de la flèche (la base), car le reste de la flèche n'est plus couvert par la vue.

    Ce que je souhaiterai donc, c'est faire pivoter non pas le canvas dans la vue, mais la vue elle-même lors de se création (c'est de cette manière que j'avais fait sur iPhone). Ainsi, j'ai juste à dessiner ma flèche aux bonnes proportions, et c'est l'Activity qui s'occupe de la placer et de l'orienter convenablement.

    J'ai remarqué la méthode setRotation (dans View) mais disponible à partir d'API level 11, et je développe en 8... Pas pour moi.

    Avez-vous une solution pour réaliser cette rotation de vue?
    Bonne journée à tous.

    Merci.

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Avez-vous une solution pour réaliser cette rotation de vue?
    Bonjour,

    Tu peux toujours utiliser les animations mais je ne penses pas que cela soit fait pour cela. L'utilisation du Canvas reste quand même la meilleure solution à mon avis et non de la View.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    En fait, je vois au moins 2 inconvénients majeurs à la solution Canvas, les actions de type OnClick et les calculs de dimensions:

    En effet, pour pouvoir afficher correctement ma flèche, je suis obligé d'agrandir les dimensions de ma vue.

    Par exemple, si ma flèche pointe vers 4h30 (soit 45°) et bien elle devient la diagonale de ma vue. Si je clic alors à côté de la flèche, l'action onClick sera validée car la vue est bien plus grande que le dessin de la flèche qu'elle contient...

    En plus, je vais être obligé de calculer au plus juste les dimensions de ma vue en fonction de la longueur de la flèche et de son angle, chose que je n'aurai pas à faire si je pivotais simplement la vue.

    Je ne sais pas si je suis très clair dans mes propos... Ça peut paraître confus dit comme ça ^^

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Ça peut paraître confus dit comme ça
    euh comment dire... oui un peu

    Quelques questions :
    - veux tu gérer la rotation de ton téléphone ? Si l'utilisateur le tient en mode horizontal est-ce différent de s'il le tient en mode vertical ? Si non, tu peux forcer un mode d'affichage de ta vue, et donc ne plus trop te soucier de ce genre de chose.
    - peux-tu nous expliquer ce que fais ton application ou le rendu qu'elle doit avoir ? Ca peut nous aider à mieux voir ton problème.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    Je vais essayer d'être le plus clair possible.

    Pour commencer, mon application est bloquée en mode paysage (c'est une application de supervision).

    Je dois afficher différents éléments sur l'écran, à des coordonnées envoyées par un serveur. L'un de ces éléments est une flèche.
    Le serveur m'envoie deux positions:
    - P1: l'origine de la flèche (x,y)
    - P2: le point d'arrivée de la flèche (x',y')

    J'ai déjà réalisé cette flèche sur iPhone, pour y arriver, je dessinais la flèche (de gauche à droite, à plat) à la bonne longueur, puis j'appliquais une rotation et une translation sur la vue pour la placer correctement entre mes 2 points P1 et P2. Ainsi, la vue correspondait exactement aux dimensions de la flèche, et je pouvais lui attribuer des actions OnClick.

    Sous Android, j'arrive à faire pivoter le canvas contenu dans une vue, mais pas la vue elle même, ce qui me pose des problèmes. Je voulais donc savoir si il existe une méthode/astuce pour réaliser ce que j'ai envie de faire (en sachant que je développe en API level 8 et que la méthode View.setRotation est disponible en API level 11 seulement).

    J'espère avoir été plus clair.

    PS: J'ai une idée, mais je ne pense pas que ce soit réalisable. Ma flèche est dessinée via un ShapeDrawable et un Path. Est-il possible de spécifier à la vue que le OnClick est attaché au ShapeDrawable, et non à la totalité de la vue? Ainsi, plus aucun problème avec le OnClick...

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Pourquoi tu ne peux pas réaliser cette rotation et translation directement avec le canvas de ta vue principale au lieu de ta View?

    PS: J'ai une idée, mais je ne pense pas que ce soit réalisable. Ma flèche est dessinée via un ShapeDrawable et un Path. Est-il possible de spécifier à la vue que le OnClick est attaché au ShapeDrawable, et non à la totalité de la vue? Ainsi, plus aucun problème avec le OnClick...
    Je ne pense pas, par exemple pour les overlays sous GoogleMaps qui est proposé par Google il passe par une nouvelle vue qu'il attache à la principale.

    Si tu ne veux pas gérer le click le mieux est de s'inspirer de cela à mon avis, en superposons les vues et assigner le click sur une vue.

Discussions similaires

  1. [XCode] Rotation d'une vue
    Par italya dans le forum XCode
    Réponses: 0
    Dernier message: 11/12/2012, 17h34
  2. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  3. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  4. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58
  5. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo