【发布时间】:2012-04-20 17:54:51
【问题描述】:
我将View 类扩展为我所说的MyView。 (我添加了一些属性,这些属性基本上说明了在对象上绘制的内容并处理它)
我每隔几毫秒移动一次此类的对象,这很好用。我正在使用this.layout(left, top, right, bottom); 来移动 MyView。但似乎每次移动视图时,都会重新绘制(调用 onDraw)。这是必要的吗? MyView 的内容在移动时不会改变。事实上,内容永远不会改变 - 它以一种方式创建,四处移动,然后被销毁。
我正在使用onDraw,因为每次创建它时,我都希望它在其上绘制一些文本或一些数字。我曾经扩展ImageView 并使用setImageResource,但我意识到我想要的不仅仅是不同的图像,并且为这个对象可能感觉不对的各种文本和数字内容创建图像。
我的对象可以接收 onTouch 事件也很重要,这在今天可以正常工作。
我的 onDraw 方法目前包含:(这会改变,当我让它不再重绘时)
@Override
public void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setARGB(255, 0, 255, 255);
canvas.drawRect(0, 0, 32, 32, p);
}
所以问题是:我可以有一个在创建时动态绘制的对象,有可能接收触摸事件(我可以用另一种方式解决这个问题,所以它是不是很重要),并且在不重新绘制的情况下移动它(最重要)?
原因是:我将拥有这个类的几个对象(可能超过 100 个),我相信通过一直重新绘制对象会降低应用程序的速度。
编辑: 如果 View 无法实现,是否有我可以使用的替代方案?
【问题讨论】: