I'm working with Android 2.1 and have the following problem: Using the method View.getDrawingCache() always returns null. getDrawingCache() should return a Bitmap, which is the presentation of View's content.
Example code:
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);
}
I've already tried different ways to configure the View object for generating the drawing cache (e.g. View.setWillNotDraw(boolean)
and View.setWillNotCacheDrawing(boolean)
), but nothing works.
What is the right way, or what I'm doing wrong?
PS: In real code I want to apply getDrawingCache() on a ViewGroup like RelativeLayout. Is the behaviour the same when using a ViewGroup?
use
for ex:
before calling getDrawingCache
had the same problem and finally this partly works for me:
the only problem is, that I can't get the full dimensions of my view. view.getwidth returns null ...
As far as I read the last days in the documentation you should onlycall setDrawingCacheEnabled or buildDrawingChache() but not both.
Check out if your view is not bigger than the screen size. I found this and switched the dimensions of my view so, now it works =) Android get full View as Bitmap
Never do these things in onCreate! You can do it in a View.onClickListener or other place.
You need
Bitmap.createBitmap(view.getDrawingCache());
as the Bitmap from which the reference is received bygetDrawingCache()
gets recycled.