Android Canvas 类支持一组丰富的绘图基元 - 圆、线等。我有一个应用程序使用这些图元来绘制一些统计数据。
阅读完相关说明后http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29。 。 。我不清楚坐标的单位是什么,或者如何使它们与设备/分辨率无关。
这些单位是什么?绘制适用于许多不同屏幕尺寸和分辨率的直线、圆形和矩形的“最佳实践”是什么?提前致谢。
Android 文档说“位置和尺寸的单位是像素”。经过一段时间的实验,我发现在2.0版本之前,单位是像素。但从2.0开始,单位很可能是dip(与设备无关的像素)。
对于以下代码:
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(0);
canvas.drawRect(new Rect(1, 1, 319, 319), paint);
我在 Android 2.0+ 的 320x480、480x800 和 240x320 模拟器上得到与屏幕宽度相同大小的正方形。
这个发现让我解决了这个问题:大屏幕上的 1 像素垂直线有时是 2 像素宽。将描边宽度设置为 0 以绘制与屏幕尺寸无关的 1 像素线条。
Edit
在获得更多 Android 经验后,我需要纠正我的结论。实际上,AndroidManifest.xml 的“supports-screens”标签中有一个属性“android:anyDensity”。该属性默认为 true。当为 true 时,度量单位为 dp,否则为像素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)