Android 2.1 View的getDrawingCache()方法总是返回null

我正在使用Android 2.1,并且遇到以下问题:使用View.getDrawingCache()方法总是返回null。 getDrawingCache()应该返回一个Bitmap,它是View内容的表示。

示例代码:

public void onCreate(final Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  final View view = findViewById(R.id.ImageView01);
  view.setDrawingCacheEnabled(true);
  view.buildDrawingCache();
  final Bitmap bmp = view.getDrawingCache();
  System.out.println(bmp);

}

我已经尝试过不同的方式来配置View对象来生成绘图缓存(例如View.setWillNotDraw(boolean)View.setWillNotCacheDrawing(boolean) ),但没有任何效果。

什么是正确的方式,或者我做错了什么?

PS:在真正的代码中,我想对像RelativeLayout这样的ViewGroup应用getDrawingCache()。 使用ViewGroup时行为是否相同?


Bitmap screenshot;
view.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);

你需要Bitmap.createBitmap(view.getDrawingCache()); 作为getDrawingCache()从其接收参考的位图得到回收。


使用

onLayout(x, y, width, height);

例如:

onLayout(0, 0, 100, 100);

在调用getDrawingCache之前


永远不要在onCreate中做这些事情! 你可以在View.onClickListener或其他地方做到这一点。

链接地址: http://www.djcxy.com/p/67621.html

上一篇: Android 2.1 View's getDrawingCache() method always returns null

下一篇: Comma doesn't work