Ich bin absolut neu in Android und ich mache etwas Experiment mit dem Canvas Objekt.Wie kann ich die Canvas-Klasse verwenden, um ein Bild in einem ImageView in dieser einfachen Android-App anzuzeigen?
Ich versuche es zu einerLeinwand hinzufügen und dann zeigen, in ein abgerufenen Image (Ich weiß, dass dies nicht der Standard und einfachste Weg, um ein Bild in ein Image zu zeigen, aber dies ist nur eine vereinfachte Experimentieren Sie für eine weitere komplexere Sache, die ich tun muss mit Canvas).
So habe ich ein star.png (ein 32x32 Pixel Symbol in meinen /res/ziehbar/ Ordnern) und ich versuche zu
Das ist meine activity_main.xml Layout-Konfigurationsdatei:
<?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" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<ImageView
android:id="@+id/star_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Dieses Layout enthält das Image mit id = star_container das ist, wo die I zeichnen muss Bild mit der Leinwand
Und das ist die MainActivity Klasse, die diese Ansicht Griff:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imgView = (ImageView) findViewById(R.id.star_container);
Canvas canvas;
Bitmap star = BitmapFactory.decodeResource(getResources(), R.drawable.star);
Bitmap output = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888);
canvas = new Canvas(output);
canvas.drawBitmap(star, star.getWidth() + 2, 0, null);
imgView.setImageDrawable(new BitmapDrawable(getResources(), output));
}
}
So in die onCreate() Methode, die ich rufe Sie das Image, wo das Bild haben, gelegt werden. Dann erstelle ich ein Bitmap Objekte der star.png Bild von den resoruces abgerufen werden, um auf die otuput Bitmap hinzugefügt wird mit der Leinwand.
Schließlich stelle ich diese Ausgabe Bitmap in den Abruf ImageView.
So erwartete ich, dass, wenn der App läuft, wird das vorherige Image das star.png Bild enthält, aber es wird nicht angezeigt.
Ich habe keinen Fehler, wenn ich diese App ausführe, aber die einzige Ausgabe, die ich erhalte, ist die Textnachricht, die in TextView definiert ist.
Warum? Was ist falsch? Was vermisse ich? Wie kann ich diesen Code ändern und es funktionieren lassen?
Das ist nicht, wie Sie Canvas überhaupt verwenden. Um eine Ansicht mithilfe eines Canvas-Bereichs zu zeichnen, erstellen Sie eine benutzerdefinierte View-Klasse und überschreiben onDraw. Sie erhalten eine Leinwand, auf die Sie zeichnen können. Der Code, den Sie hier haben, ist so verworren, dass er nicht veräußerlich ist. –