Android 图表在模拟器上绘制良好,但在手机上绘制不好

Android 图表在模拟器上绘制良好,但在手机上绘制不好,android,drawing,android-canvas,Android,Drawing,Android Canvas,我在画布上用圆、弧和线画了一张基本的史密斯图表。我已经在许多大小的模拟器屏幕上运行了该应用程序,所有这些都能很好地工作,但一旦我在实际设备(Android 2.3.5级)上尝试了它,图表就不会像它应该的那样对齐,即一些对象不合适 在编写代码时,我小心地使用get.Width()和get.Height()作为参数,而不是使用像素,这样应用程序就可以在所有设备上正常工作。下面是我使用的代码示例: canvas.drawCircle(canvas.getWidth()*1/2, canvas.getH

我在画布上用圆、弧和线画了一张基本的史密斯图表。我已经在许多大小的模拟器屏幕上运行了该应用程序,所有这些都能很好地工作,但一旦我在实际设备(Android 2.3.5级)上尝试了它,图表就不会像它应该的那样对齐,即一些对象不合适

在编写代码时,我小心地使用get.Width()和get.Height()作为参数,而不是使用像素,这样应用程序就可以在所有设备上正常工作。下面是我使用的代码示例:

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);

这个图形在我尝试过的所有不同大小的模拟器屏幕上都显示得很好,所以有人能告诉我为什么它不能在实际设备上显示。谢谢

您必须使用百分比值而不是数字。。。此外,请尝试查看从getwidth()获取的值u r的转换。可能缺少一些值。

尝试绘制一个简单的形状,如果它工作正常,硬编码的值一定有问题,您介意发布您的代码和xml吗?谢谢您的回复。你怎么用百分数来代替数字呢?我觉得你不能。我想到的另一个解决方案是使用dp值,但这也不起作用。嗨,当你说使用百分比值时,你的意思是浮动,即0.50f而不是1/2。谢谢