Android:在画布上绘图和旋转

时间:2011-01-28 18:37:59

标签: android canvas coordinates screen-rotation

我正在为平板电脑创建一个绘图应用程序,我对如何最好地处理绘图画布感兴趣,这与画面方向的变化有关。绘图程序跟踪用户输入并将它们存储为矢量,由X,Y坐标锚定。

该问题涉及纵向/横向模式中X,Y的不同大小。如果用户具有填充屏幕的画布(减去通知和标题栏),并且在纵向模式下绘制靠近画布底部(例如在320x480屏幕上的点140,460处),则当屏幕被翻转为横向并从中重新创建时我存储的X,Y向量,140,460处的点现在超出了屏幕的界限(因为屏幕现在是480x320)。同样,如果他们在屏幕右边缘附近的景观中绘制点并翻转回肖像,那么这些点将超出界限。

我已经四处寻找解决方案,显而易见的是将屏幕锁定到特定方向。我从Marketplace下载的一些绘图应用程序就是这样处理的。

由于我正在为平板电脑设计这款产品,我希望让用户可以随心所欲地绘制,同时在屏幕边界等方面保持一定的理智。

我曾经/尝试过的想法包括:

  • 锁定到特定方向 - 好的,但讨厌强迫用户达到某种偏好
  • 锁定到特定方向并隐藏标题和通知栏,因此用户只需提供一个大空白画布,他们可以按照自己的意愿使用 - 但讨厌隐藏通知栏

我想到了隐藏标题栏,显示通知,允许方向更改的可能性,然后如果屏幕旋转到横向,将画布旋转回肖像,但当导航栏从顶部移动时在横向右侧的肖像画中,我仍然得到相同的X,Y边界问题,只是程度要小得多(通知栏的宽度有效)。

对此解决方案的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

实现滚动/平移,让绘图表面任意大于父视图的尺寸。然后,无论设备是纵向还是横向,都无关紧要。你只需要一个视图作为绘图表面特定部分的窗口。