1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Tiles/PNGs darstellen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Elmey, 26.12.2011.

  1. Elmey, 26.12.2011 #1
    Elmey

    Elmey Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    02.10.2011
    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

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    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.

Diese Seite empfehlen