Wie zeichnet man eine TextView in eine Bitmap (ohne jemals gezeichnet wird, auf der Anzeige)

Viele Beiträge gefunden, nach dem Thema "screenshot eine TextView in eine Bitmap".

Gut, der Unterschied zu meinem problem ist, dass zuerst die Ansicht für die Darstellung auf der Anzeige (mit allen layouten und Messung der Arbeit, die bereits getan), und dann zieht er in eine Leinwand verbunden mit einem Bitmap.

Ich will einfach erstellen Sie eine TextView aus dem nichts, ohne jemals auf dem display angezeigt, welches ist gerendert in eine Bitmap.

Dieser ist die basis-Konfiguration, die ist schon dran. Ein Klick auf die TextView zieht sich in ein Bitmap und legt es auf eine Bildansicht.

<?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);
        }
    });
}

Jetzt kommt der problematische Teil. Ich erstelle eine TextView in Java und das will ich haben, gezogen zu werden, direkt in eine Bitmap. Danach werde ich mich festlegen, dass dieser eine Bildansicht. Ich habe nie dieses läuft 🙁

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);

Das funktioniert nicht, weder in der onCreate-noch in einem OnClickListener. Das Experimentieren mit setDrawingCacheEnabled(), measure() und requestLayout() hat nicht funktioniert.

InformationsquelleAutor DaRolla | 2011-09-04
Schreibe einen Kommentar