我不确定我是否以“正确”的方式进行操作,因此我也愿意接受其他选项。这是我想要实现的内容:
我想要一个包含图形的视图。图形应该由应用程序本身动态创建。图形应该可以缩放,并且可能比屏幕更大(大约800x600)
我计划从简单开始,只有散点图。最终,我希望散点图具有拟合线和误差条,并且轴在图形缩放时保持在屏幕上……所以这可能意味着三个叠加的带有缩放功能的图像。
我已经构建了一个可以使用可绘制对象的视图,可以使用聚焦的捏合缩放和拖动,可以自动缩放图像,可以动态切换图像,并且可以接受大于屏幕的图像。将图像绑定在一起不应该是问题。
但是,我无法弄清楚如何动态绘制简单的图像。
例如:我需要获取一个BitMap对象并逐像素地绘制吗?我想使用一些ShapeDrawables,但似乎它们只能在画布上绘制形状……那么我怎样才能将所有这些形状的位图放入我的视图中?或者,是否必须在每次移动或缩放时在我的视图的“onDraw”例程中动态重新绘制/所有/我想要描绘的图像?
我认为“完美”的解决方案是使用ShapeDrawable(或类似它的东西来绘制线条并对其进行标记)使用视图的onDraw方法绘制轴……使它们保持最新并处于正确的级别……然后叠加数据点/拟合曲线/等的预先生成的图像,可以进行缩放和移动。这应该可以通过将白色设置为图形图像上的alpha来实现。
附:图形图像在视图上实际上不应该/更改。它只是缩放和被拖动。轴可能会随着移动而实际更改。因此,在进入视图之前(或立即进入视图时)预先生成图形将是最佳选择。但是,我还注意到矢量图像的缩放效果非常好……这也听起来很合适(而不是位图?)。
因此,我正在寻找一些一般性的指导。尝试阅读BitMap、ShapeDrawable、Drawable等类,但似乎找不到正确的解决方案。这使我认为我正在走错路,需要有更多经验的人指点方向。希望我没有浪费昨天组合的可缩放视图的时间:)。