1. Elmey, 26.12.2011 #1
    Elmey

    Elmey Threadstarter Neuer Benutzer

    Hi,

    als Android-Anfänger (aber nicht als Programmier-Anfänger) bräuchte ich mal ein paar Denkanstöße für ein Projekt. D.h. ein paar Tipps, mit welchen Android-Klassen das machbar ist, genügt mir vollkommen:

    Ich würde gerne mehrere PNG-Images nebeneinander darstellen. Diese liegen als Kacheln vor, welche zusammengesetzt das gewünchte Bild ergeben. Anschließend möchte ich auf dieses Bild zeichnen - um genau zu sein einen Kreis einzeichnen.

    Womit geht das am cleversten?

    Danke schon mal für die Starthilfe!

    Elmi
     
  2. funcoder, 29.12.2011 #2
    funcoder

    funcoder Erfahrener Benutzer

    Hallo Elmey,

    je nachdem was du genau damit vorhast würde ich das ganze mit einer eigenen View realisieren.

    Wie das ganze aussehen kann habe ich mal kurz zusammengebaut:
    Code:
    package de.funcoder.canvas;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
     
    public class TestProjectActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            //Setze als View die innere Panel Klasse
            setContentView(new Panel(this));
        }
     
        class Panel extends View {
            public Panel(Context context) {
                super(context);
            }
     
            @Override
            public void onDraw(Canvas canvas) {
            	// Bitmap Objekt anhand einer Resource im Drawable Verzeichnis erzeugen
                Bitmap sampleBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.deine_PNG_FILE);
                
                //Bitmap auf Position x:10, y:10 zeichnen.
                canvas.drawBitmap(sampleBitmap, 10, 10, null);
                
                // Neues Paint Objekt erzeugen und als Farbe weiß zuordnen
                Paint samplePaint = new Paint();
                samplePaint.setColor(Color.WHITE);
                
              //Kreis auf Position x:50, y:70 zeichnen mit einem Radius von 15 unter verwendung des samplePaint Objekts
                canvas.drawCircle(50, 70, 15, samplePaint);
            }
        }
    }
    
    Deine Activity setzt als View die erstellte Panel-Klasse die wiederrum bei einem Redraw-Event die onDraw Methode aufruft die zuerst die Bild-Datei aus dem Resource-Verzeichnis lädt und anschließend auf das Canvas-Objekt zeichnet.
    Für den Kreis bietet die Canvas-Klasse die drawCircle-Methode, die absolut selbsterklärend ist.

    Wichtig für später ist, sofern du beispielsweise daraus ein Spiel machen solltest, was ein häufiges redrawen benötigt ist, dass du die Objekt-Erzeugung für "sampleBitmap" und "samplePaint" auslagerst, sodass nicht jedesmal ein neues Objekt erzeugt werden muss.
     
    Elmey bedankt sich.