Il n'y a pas de problème avec le mode portrait, mais quand j'essaie mon application en mode paysage, ça ne ressemble pas à ce qu'il devrait faire.Quel est l'approche générale pour résoudre ce problème.Ma première idée est de remplacer X et Y.Si je suis sur la bonne voie, comment dois-je faire cela? Devrais-je utiliser une instruction if au début de la fonction onDraw() et écrire deux fois le même code (un pour x, y et autre pour y, x)?Comment dessiner une toile en fonction de l'orientation du téléphone (paysage, portrait)?
Répondre
Il ne devrait pas être nécessaire d'échanger les coordonnées X et Y dans votre dessin. Par défaut, lorsque les applications sont pivotées, les systèmes de coordonnées le sont également.
malheureusement, il est nécessaire dans mon application peut-être que je fais quelque chose de mal.Quand le téléphone est tourné (mode paysage) toile est redessiné, mais il dessine toujours comme mode portrait et la moitié de la toile ne sera pas affichée sur l'écran de l'écran est empty horizontalement. – dirhem
Essayez-vous de gérer les changements d'orientation vous-même? –
Il semble que vous spécifiez des largeurs et des hauteurs absolues pour vos appels de dessin. Par exemple, si vous avez enregistré myWidth = 480 et myHeight = 800 dès le début, et que vous effectuez tous vos dessins de cette façon, lorsque l'appareil est pivoté, ces largeurs et hauteurs ne s'appliquent plus.
Je pense que la solution pour vous ici est d'écouter les rappels de taille changée et de réinitialiser votre idée de largeur et de hauteur en conséquence. Si vous dessinez directement dans une vue, vous souhaitez remplacer View.onSizeChanged().
Salut merci pour votre réponse.Je n'utilise pas la largeur absolue et la hauteur, mais je dessine un bitmap et ma toile et comme je l'ai dit avant la moitié de mon bitmap ne montre pas en raison du problème X, Y de la rotation. – dirhem
Ensuite, vous devez dessiner ce bitmap différemment lorsque la taille de la vue change. Recréez-le avec une largeur plus large et une hauteur plus mince au moment où onSizeChanged est appelé. – Josh
Créez un deuxième dossier avec votre mise en page pour le paysage comme le suggère la documentation, ou y a-t-il une raison pour laquelle vous ne le faites pas? –
depuis que j'utilise la toile et ma propre vue, je n'utilise pas de fichier XML de mise en page. – dirhem