Se encuentran muchas publicaciones de acuerdo con el tema "captura de pantalla una vista de texto en un mapa de bits".Cómo dibujar una vista de texto en un mapa de bits (sin dibujar nunca en la pantalla)
Bueno, la diferencia con mi problema es que primero se dibuja la vista en la pantalla (con todo el trabajo de disposición y medición ya hecho) y luego se dibuja en un Lienzo conectado a un Mapa de Bits.
Solo quiero crear un TextView desde cero sin que se muestre nunca en la pantalla que se representa en un mapa de bits.
Esta es la configuración base que ya está funcionando. Un clic en TextView se dibuja en un mapa de bits y lo establece en un ImageView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:background="#fff">
<TextView android:id="@+id/tv" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="The Quick Brown Fox Jumps Over The Lazy Dog."
android:textSize="20dip" android:background="#abcdef"
android:textColor="#000" android:padding="10dip"
android:layout_margin="10dip" />
<ImageView android:id="@+id/iv" android:layout_width="449px"
android:layout_height="47px" android:background="#56789a"
android:layout_margin="10dip" />
</LinearLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.tv).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
v.draw(canvas);
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bmp);
}
});
}
Ahora viene la parte problemática. Crearé un TextView en Java y quiero que este se dibuje directamente en un mapa de bits. Después de esto, estableceré esto en un ImageView. Nunca tuve este espectáculo de correr :(
Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
TextView tv = new TextView(this);
tv.setText("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
tv.setTextSize(55f);
tv.setTextColor(this.getResources().getColor(android.R.color.black));
tv.draw(canvas);
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bmp);
Esto no funciona ni en onCreate ni en un OnClickListener. Experimentando con setDrawingCacheEnabled(), medida() y requestLayout() no funcionó bien.
Me ayudó mucho. –