1
我已经创建了一个自定义视图,通过onDraw()覆盖方法绘制一些形状。该视图是可滚动的,因此每次用户在Activity中导航时,onDraw()方法都会调用并绘制所有画布。在onDraw()方法中,有一些语句会进行一些硬性计算,所以我的意图是在用户滚动视图时仅绘制不可见的部分,而现在对于滚动而言,它们是可见的。Android - 只绘制可见部分
如何绘制只在我的自定义视图中可见的部分?
@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);
}
}
感谢您的答复。它是如何工作的? – user3653803 2014-09-25 15:15:47
您为要绘制的元素创建一个边界矩形。你给它的元素的X,Y,X +宽度,Y +高度。然后它会完成剩下的工作。 – Knossos 2014-09-25 15:20:05
这是否回答了您的问题? – Knossos 2014-09-26 08:10:11