Tiles/PNGs darstellen

  • 1 Antworten
  • Letztes Antwortdatum
E

Elmey

Neues Mitglied
0
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
 
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.
 
  • Danke
Reaktionen: Elmey

Ähnliche Themen

M
Antworten
0
Aufrufe
1.249
mglinka99
M
T
Antworten
2
Aufrufe
1.283
jogimuc
J
M
Antworten
1
Aufrufe
918
Kardroid
Kardroid
Zurück
Oben Unten