我有一个布局,它作为 ImageView、ListView、一些 TextViews 等包装在 ScrollView 中。每当用户滚动父视图时,都会调用所有子视图的 draw() 方法。由于我的 ImageView 是动态构建的复杂位图,因此滚动确实变得迟钝,因为我的 imageview 的 draw() 被连续调用,它委托给 ImageView.onDraw() 并反过来委托给我的复杂 ConstructMyBitmap.draw() 并重绘我的每次的位图。
我需要在滚动事件上抑制这个 imageView.onDraw() 调用。每次滚动发生时,我都不想重绘复杂的位图。
如何识别 onDraw() 中的滚动事件?
或者有没有更好的方法来处理这个?
致罗曼盖伊:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(chart != null && chart.shdRedraw())
{
chart.draw(canvas);
}else
{
//Do nothing - Canvas should retain the old data
}
// :-) Happy, Now I control when the chart shd be drawn but.. :-(
}
不幸的是,当 onDraw() 被调用 onScroll 事件并且我决定不绘制图表时,结果是一个空白图表区域。onDraw() 中给我的画布不包含之前绘制的信息。不知道 onDraw() 是否刷新画布?对此有何指导?