I am able to convert a Layout
with a TextView
into a Bitmap
, as long as the event that happens after onCreate()
. But when I try during on create, it does not work.
Is there a way to get this to work? I have tried using inflate()
in various ways with no joy.
There are various answered questions including this one that address the technique that I'm successfully using in my code. But the success does not include employing the technique from onCreate()
.
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private RelativeLayout mTextLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// This is what I would like to work
replaceTheRobot(); // Fails. Bitmap is null.
}
public void onClickGetBitmap(View view) {
replaceTheRobot(); // Works. Bitmap replaces the robot.
}
private void replaceTheRobot() {
mTextLayout = (RelativeLayout) findViewById(sampleRelativeLayout);
mTextLayout.setDrawingCacheEnabled(true);
Bitmap bitmap = mTextLayout.getDrawingCache();
if (bitmap == null) {
Toast.makeText(getApplicationContext(), "The bitmap was null", Toast.LENGTH_LONG).show();
Log.v(TAG, "The bitmap was null");
}
else {
Toast.makeText(getApplicationContext(), "The bitmap size: " + bitmap.getWidth() +", " + bitmap.getHeight(), Toast.LENGTH_LONG).show();
ImageView imageViewRobot = (ImageView) findViewById(R.id.imageViewRobot);
imageViewRobot.setImageDrawable(new BitmapDrawable(this.getResources(), bitmap));
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/sampleRelativeLayout"
android:layout_width="50dp"
android:layout_height="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/helloTextView" />
</RelativeLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageViewRobot"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:text="Get Bitmap"
android:onClick="onClickGetBitmap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/button" />
</RelativeLayout>