【发布时间】:2014-09-25 23:12:11
【问题描述】:
我创建了一个自定义视图,它通过 onDraw() 重写方法绘制一些形状。此视图是可滚动的,因此每次用户在 Activity 中导航时,都会调用 onDraw() 方法并绘制所有画布。在 onDraw() 方法中有一些语句进行了一些艰苦的计算,所以我的意图是绘制,当用户滚动视图时,只有不可见的部分,现在,对于滚动,它们是可见的。
如何仅绘制自定义视图中可见的部分?
@Override
protected void onDraw(Canvas sysCanvas)
{
super.onDraw(sysCanvas);
if(!giaDisegnato) //If I've never drawn before, let's draw
{
if(!listaTl.isEmpty())
{
toDisk= Bitmap.createBitmap(w,h,Bitmap.Config.RGB );
canvas = new Canvas(toDisk);
canvas.drawColor(Color.WHITE);
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setAntiAlias(true);
p.setStrokeWidth(1);
for(TimelineGrafica t : listaTl)
{
if(inseritaLaPrima)
y = ySalvata + this.yAngoloDestroGiu + DISTANZA_FRA_TIMELINE;
p.setColor(t.getColor());
disegnaPunta(canvas,p,t);
disegnaRettangolo(canvas,p,t);
disegnaGrain(canvas,p,t);
disegnaFatti(canvas,p,t);
inseritaLaPrima = true;
}
y = ySalvata;
inseritaLaPrima = false;
sysCanvas.drawBitmap(toDisk,0,0,p);
}
requestLayout();
giaDisegnato = true;
}
else
{
//Here I've already drawn. So I'd like to redrawn the part of the view that now
//is visible.
sysCanvas.drawBitmap(toDisk,0,0,p);
}
}
【问题讨论】:
标签: android