[Android] Neue View erstellen und mit XML einbinden

Neok

Erfahrenes Mitglied
Guten Tag!

Ich versuche eine App zu erstellen, um einige Grundlagen zu erlernen.
Unter anderem soll es ein Textfeld geben und einen Button, welcher, wenn man auf ihn drückt, einen Sinus zeichnen soll.

ui.jpg

Das weiße Feld mit dem Sinus (mit Paint selbst in den Screenshot eingefügt :D ), möchte ich mit einer neuen View-Klasse realisieren. Zusätzlich soll das wie gehabt als Element in das XML-Layout einfügbar sein.

Ich weiß jetzt nicht so recht wie ich da vorgehen soll :-(
Ich habe auf http://developer.android.com/guide/topics/graphics/2d-graphics.html nachgeschaut und denke der Weg Draw with a Canvas und denn On a View sollte der richtige sein.

So denn hab ich angefangen eine Neue View-Klasse zu erstellen (SinusView) und diese beiden Konstruktoren erstellt (wie genau das mit den Konstruktoren funktioniert weiß ich auch nicht, was Konstruktoren sind weiß ich schon und ich weiß das man diese wohl braucht damit man die neue Klasse ins XML-Layout einbauen kann.).
Zu guter letzt hab ich denn noch die onDraw Callback Methode erstellt, ich denke in dieser sollte man das Bild dann berechnen, aber wie bekomme ich das denn angezeigt? Was hat es mit dem Canvas Parameter auf sich?

Das Ganze sieht dann so aus:
Java:
public class SinusView extends View {
	// XML mit Style
	public SinusView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// TODO Auto-generated constructor stub
	}

	// XML
	public SinusView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

              // Hier den Sinus berechnen und die Grafik ausgeben
	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
	}
}
weiter weiß ich nun auch nicht, falls das überhaupt der richtige Weg ist.

Es wär toll wenn mir jemand erklären könnte wie man ein einfaches selbst generiertes Bild ( ein blaues Rechteck zum Beispiel ) darstellt, mit den Maßen wie sie im XML-Layoutelement angegeben sind.

Vielen Dank!
 
Zuletzt bearbeitet:
Hi,
so wie du angefangen hast, ist es schon richtig. Nun musst du nur noch ein zwei Punkte erledigen und schon kannst du deine eigene View bewundern. Hierzu machst du folgendes:
- Wenn du mit Eclipse arbeitest, kannst du über den Android-UI-Designer in der Palette unter "Custom & Library Views" deine View unter dem Namen deiner Klasse (in deinem Fall "SinusView") finden
- Verwendest du kein Eclipse, kannst du deine Klasse auch über das XML einfügen. Z.B. so:
Java:
<deine.packages.SinusView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    ></deine.packages.SinusView>

Nun zu der onDraw(Canvas)-Methode:
Das Canvas-Objekt, welches du übergeben bekommst, ist sozusagen dein leeres Blatt Papier. Darauf kannst du nun drauf malen, was immer du malen willst. Hierfür bietet dir die Klasse Canvas bereits einige Methoden.

Viele Grüße

Fabio
 
Zurück