【问题标题】:getDrawingCache is not updatedgetDrawingCache 未更新
【发布时间】:2014-08-21 16:20:35
【问题描述】:

我在 onDraw 函数中调用 getDrawingCache。问题是它仅在第一次包含对画布的更改,之后,它根本不会随着新的更改而更新。这是我的代码:

        paintAction.draw(canvas);
        if (paintAction.isPermanentChange())
        {
            Bitmap partialBitmap=getDrawingCache();
            int numColored=0;
            for (int index1=0;index1<partialBitmap.getWidth();index1++)
            {
                for (int index2=0;index2<partialBitmap.getHeight();index2++)
                {
                    if (partialBitmap.getPixel(index1,index2)==0xFF000000) 
                        numColored++;
                }
            }
            Log.i("PaintDroid","Bitmap pixels: " + numColored);
            int areaWidth=partialBitmap.getWidth()-SCROLLBAR_SIZE;
            int areaHeight=partialBitmap.getHeight()-SCROLLBAR_SIZE;
            int[] pixels=new int[areaWidth*areaHeight];
            partialBitmap.getPixels(pixels,0,areaWidth,0,0,areaWidth,
                    areaHeight);    
            numColored=0;
            for (int index=0;index<pixels.length;index++)
                if (pixels[index]==0xFF000000) numColored++;
            Log.i("PaintDroid","Pixels: " + numColored);

(setDrawingCache(true)在创建视图时调用,因为如果我从onDraw调用它,getDrawingCache会返回null。)

可以看出,我通过遍历位图和获取数组中的值来计算黑色像素的数量,正如我所说,我第一次得到了我期望的数字,但之后那,它应该增加,但根本没有改变!

有人知道出了什么问题吗? 谢谢。

【问题讨论】:

    标签: android android-canvas android-view


    【解决方案1】:

    我解决了。问题是我在 onDraw 画布上的最后一次绘制操作之前调用了 setDrawingCacheEnabled(true)。必须在绘制完成后调用,否则无法得到正确的结果。

    【讨论】:

      【解决方案2】:

      澄清一下,这里的问题是视图的绘图缓存在你第二次调用getDrawingCache()之前没有失效。

      为了刷新绘图缓存,它必须是无效的,调用方法的顺序应该如下:

      public Bitmap renderView(View view) {
          view.setDrawingCacheEnabled(true)
          Bitmap bitmap = view.getDrawingCache();
          view.setDrawingCacheEnabled(false)
          return bitmap;
      }
      

      【讨论】:

      • 如果需要设置回false,最好保存位图后再设置,否则会被回收。
      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多