gpt4 book ai didi

android - 为 Canvas 类绘图基元提供独立性

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:09 26 4
gpt4 key购买 nike

Android Canvas 类支持一组丰富的绘图原语 - 圆圈、直线等。我有一个应用程序使用这些来绘制一些统计数据。

阅读关于http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 的描述后. . .我不清楚坐标的单位是什么,也不清楚如何使它们与设备/分辨率无关。

这些单位是什么?绘制适用于多种不同屏幕尺寸和分辨率的直线、圆形和矩形的“最佳实践”是什么?提前致谢。

最佳答案

Android 文档说“位置和尺寸的单位是像素”。经过一段时间的试验,我发现在 2.0 版本之前,单位是像素。但从 2.0 开始,单位很可能是倾角(与设备无关的像素)。

对于下面的代码:

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 像素线条。

编辑

在获得更多 Android 经验后,我需要纠正我的结论。实际上在 AndroidManifest.xml 的“supports-screens”标签中有一个属性“android:anyDensity”。默认情况下此属性为真。当为真时,度量单位为 dp,否则为像素。

关于android - 为 Canvas 类绘图基元提供独立性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4908486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com