2012-12-24 1 views
1

J'ai dessiné un graphique de base de Smith sur la toile en utilisant des cercles, des arcs et des lignes. J'ai exécuté l'application sur de nombreux écrans d'émulation de taille et tout fonctionne parfaitement, mais une fois que je l'ai essayé sur un appareil réel (Android niveau 2.3.5) le graphique ne s'aligne pas, comme certains objets sont hors de propos. En écrivant le code, j'ai pris soin d'utiliser get.Width() et get.Height() pour les paramètres au lieu d'utiliser des pixels pour que l'application fonctionne correctement sur tous les périphériques. Ci-dessous un exemple de code i utilisé:Le dessin graphique est correct sur l'émulateur mais pas sur le téléphone

canvas.drawCircle(canvas.getWidth()*1/2, canvas.getHeight()*3/8, canvas.getWidth()*475/1000, black); 
     canvas.drawCircle(canvas.getWidth()*5/8, canvas.getWidth()*5/8, canvas.getWidth()*349/1000, black); 
     canvas.drawCircle(canvas.getWidth()*6/8, canvas.getWidth()*5/8, canvas.getWidth()*228/1000, black); 
     canvas.drawCircle(canvas.getWidth()*7/8, canvas.getWidth()*5/8, canvas.getWidth()*103/1000, black); 
arc0.set(canvas.getWidth()/2, canvas.getHeight()*-139/700, canvas.getWidth()*100/69, canvas.getHeight()*3/8); 
     arc1.set(canvas.getWidth()*-6/112, canvas.getHeight()*-80/100, canvas.getWidth()*195/100, canvas.getHeight()*72/192); 
     arc2.set(canvas.getWidth()*7/10, canvas.getHeight()*70/700, canvas.getWidth()*125/100, canvas.getHeight()*3/8); 
     arc3.set(canvas.getWidth()/2, canvas.getHeight()*3/8, canvas.getWidth()*100/69, canvas.getHeight()*91/96); 
     arc4.set(canvas.getWidth()*-8/112, canvas.getHeight()*3/8, canvas.getWidth()*195/100, canvas.getHeight()*150/100); 
     arc5.set(canvas.getWidth()*7/10, canvas.getHeight()*3/8, canvas.getWidth()*125/100, canvas.getHeight()*65/100); 

Les lignes de graphique vers le haut bien sur tous les différents écrans de l'émulateur de la taille que j'ai essayé, voilà ce que personne en mesure de me dire pourquoi il ne correspond pas sur un dispositif réel. Merci

+0

essayez de dessiner une forme simple, si cela fonctionne bien, il doit y avoir un problème avec les valeurs codées en dur, cela vous dérangerait de poster votre code & xml? –

Répondre

0

Vous devez utiliser des valeurs en pourcentage et non des nombres ... de plus, essayez de voir les conversions de la valeur obtenue par getwidth(). Peut-être certaines valeurs sont manquantes ..

+0

Merci pour la réponse. Comment utiliseriez-vous des valeurs en pourcentage plutôt que des chiffres? J'avais l'impression que vous ne le pouviez pas. Une autre solution à laquelle je pensais était d'utiliser les valeurs dp mais cela ne fonctionnait pas non plus. – user1927105

+0

salut quand vous avez dit d'utiliser des valeurs en pourcentage voulez-vous dire flotteurs, c'est-à-dire 0.50f au lieu de 1/2. Merci – user1927105

Questions connexes