Hi I tried to write a function that takes a screenshot. I found a code that does it perfectly with a button clicklistner,but when I remove the button clicklistner and just try to take a screenshot in the oncreate the bitmap I get is empty. Why does it happens?
layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/LinearLayout01"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="munch"
android:id="@+id/munchscreen"
/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="500dp"
android:id="@+id/screenshots"
/>
Activity:
public class MainActivity extends Activity {
LinearLayout L1;
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
L1 = (LinearLayout) findViewById(R.id.LinearLayout01);
Button but = (Button) findViewById(R.id.munchscreen);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View v1 = L1.getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bm = v1.getDrawingCache();
BitmapDrawable bitmapDrawable = new BitmapDrawable(bm);
image = (ImageView) findViewById(R.id.screenshots);
image.setBackgroundDrawable(bitmapDrawable);
}
});
}
}
just try to take a screenshot in the oncreate the bitmap I get is empty. Why does it happens?
The UI will not have been rendered yet. Given the approach that you are using, you need for the framework to have actually drawn the UI before you can capture a screenshot.
If, instead, you have the root View
draw()
to a Bitmap
-backed Canvas
, that might work already in onCreate()
. It depends on whether the root View
has been called with measure()
and layout()
yet, and I'm not sure whether that happens already in onCreate()
or at a later point.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With