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