代码之家  ›  专栏  ›  技术社区  ›  gvaish

自定义视图-避免非交互式时重新绘制

  •  1
  • gvaish  · 技术社区  · 16 年前

    我有一个复杂的自定义视图-照片拼贴。

    所观察到的是,每当发生任何UI交互时,都会重新绘制视图。

    如何避免视图的完全重画(例如,使用缓存的UI),特别是当我单击“上一步”按钮返回到上一个活动时,因为这也会导致视图的重画。

    在探索API和web时,我发现了一个方法- getDrawingCache() -但不知道如何有效地使用它。

    如何有效地使用它?

    我对我概述的自定义视图还有其他问题 here

    2 回复  |  直到 9 年前
        1
  •  2
  •   gvaish    16 年前

    在onDraw的方法中,除了在自然画布上画画外,我还画了一幅只有记忆的画布。

    Bitmap cacheBmp = Bitmap.Create(....);
    Canvas cacheCanvas = new Canvas(cacheBmp);
    
    
    void onDraw(Canvas c)
    {
       if(updateDueToInteraction)
       {
         c.drawXXX(...);
         cacheCanvas.drawXXX(...);
       } else
       {
         c.drawBitmap(cacheBmp, 0, 0);
       }
    }
    
        2
  •  0
  •   Cristian    16 年前

    setDrawingCacheEnabled(true) getDrawingCache(boolean) 返回 Bitmap

    如果不通过调用 setDrawingCacheEnabled(真) 方法,则必须调用 buildDrawingCache() destroyDrawingCache() 完成后)。

    再见!