F
Flocke123
Ambitioniertes Mitglied
- 4
Hallo Leute,
ich versuche mich aktuell an dem Thema XML.
Habe hierzu mit Microsoft Expression Design eine Ampel gezeichnet und in XAML umgewandelt.
Anschließend den Code in eine XML Datei in Eclipse kopiert. Soweit so gut. Die Canvas Objekte und deren Attribute werden richtig vom System erkannt.
Es ist ein Rechteck (Hintergrund) und 3 Ellipsen (Lampen).
Nächster Schritt wäre eine von "View" abgeleitete Klasse "Ampel" zu erstellen.
Diese Klasse hat einen Integerwert, der mir den Status der Ampel zeigt.
0 = Stop, 1 = Noch nicht und 2 = Los.
Je nach Status, sollen dann die verschiedenen Lampen in deren Farben leuchte, oder eben Grau/Weiß (was auch immer) sein.
Ich versteh nur nicht, wie ich die Ampel.XML mit der Ampel.Class in Verbindung bringen kann.
Funktioniert das irgendwie, wenn ich die onDraw() Methode überschreib? und wie kann ich dann aus dem Programm den Status des Ampel-Objektes verändern?
Eine andere Frage nebenbei, auch wenn sie vorgegriffen ist
Kann ich dieses Ampel Objekt dann auch einfach in ein Layout ziehen? Also wie man es eben von Buttons, TextViews usw kennt.
Ein paar Tipps hierzu wären super.
Gruß Flocke
Der ursprüngliche Beitrag von 15:04 Uhr wurde um 15:39 Uhr ergänzt:
Okay, die Zusatzfrage hat sich geklärt.
Ich sehe ein Ampel Objekt schon in der Lasche Custom View & Layout.
Wenn ich es reinziehe bekomme ich den Fehler
Was mich nicht weiter verwundert.
Was ich aktuell versucht habe in der onDraw()
Hoffe jemand weis da besser bescheid als ich
Der ursprüngliche Beitrag von 15:39 Uhr wurde um 16:10 Uhr ergänzt:
Okay, sieht nicht so aus, als würde das so funktionieren, wie ich das gerne hätte.
Die XML Attribute stehen alle unter Unknown, hatte das überlesen.
Kann die XML-Datei auch nicht in ein Drawable umwandeln.
Sehr schade.
Gibt es denn Programme, mit denen man grafische Objekte zeichnen, und diese dann in einer "Android-Konformen" Technik importieren kann?
ich versuche mich aktuell an dem Thema XML.
Habe hierzu mit Microsoft Expression Design eine Ampel gezeichnet und in XAML umgewandelt.
Anschließend den Code in eine XML Datei in Eclipse kopiert. Soweit so gut. Die Canvas Objekte und deren Attribute werden richtig vom System erkannt.
Es ist ein Rechteck (Hintergrund) und 3 Ellipsen (Lampen).
Code:
<?xml version="1.0" encoding="utf-8"?>
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Ampel" Width="800" Height="600" Clip="F1 M 0,0L 800,0L 800,600L 0,600L 0,0" UseLayoutRounding="False">
<Canvas x:Name="Ebene_1" Width="800" Height="600" Canvas.Left="0" Canvas.Top="0">
<Rectangle x:Name="Rectangle" Width="241" Height="361" Canvas.Left="279.5" Canvas.Top="39.4999" Stretch="Fill" StrokeLineJoin="Round" Stroke="#FF000000" Fill="#FF8C8C8C"/>
<Ellipse
x:Name="LampRed"
Width="101"
Height="101"
Canvas.Left="349.5"
Canvas.Top="59.5"
Stretch="Fill"
StrokeLineJoin="Round"
Stroke="#FF000000"
Fill="#FFFFFFFF"
/>
<Ellipse
x:Name="LampYellow"
Width="101"
Height="101"
Canvas.Left="349.5"
Canvas.Top="169.5"
Stretch="Fill"
StrokeLineJoin="Round"
Stroke="#FF000000"
Fill="#FFFFFFFF"
/>
<Ellipse
x:Name="LampGreen"
Width="101"
Height="101"
Canvas.Left="349.5"
Canvas.Top="279.5"
Stretch="Fill"
StrokeLineJoin="Round"
Stroke="#FF000000"
Fill="#FFFFFFFF"
/>
<Rectangle x:Name="Rectangle_0" Width="39" Height="151" Canvas.Left="379.5" Canvas.Top="399.5" Stretch="Fill" StrokeLineJoin="Round" Stroke="#FF000000" Fill="#FF8C8C8C"/>
</Canvas>
</Canvas>
Nächster Schritt wäre eine von "View" abgeleitete Klasse "Ampel" zu erstellen.
Diese Klasse hat einen Integerwert, der mir den Status der Ampel zeigt.
0 = Stop, 1 = Noch nicht und 2 = Los.
Je nach Status, sollen dann die verschiedenen Lampen in deren Farben leuchte, oder eben Grau/Weiß (was auch immer) sein.
Ich versteh nur nicht, wie ich die Ampel.XML mit der Ampel.Class in Verbindung bringen kann.
Funktioniert das irgendwie, wenn ich die onDraw() Methode überschreib? und wie kann ich dann aus dem Programm den Status des Ampel-Objektes verändern?
Eine andere Frage nebenbei, auch wenn sie vorgegriffen ist
Kann ich dieses Ampel Objekt dann auch einfach in ein Layout ziehen? Also wie man es eben von Buttons, TextViews usw kennt.
Ein paar Tipps hierzu wären super.
Gruß Flocke
Der ursprüngliche Beitrag von 15:04 Uhr wurde um 15:39 Uhr ergänzt:
Okay, die Zusatzfrage hat sich geklärt.
Ich sehe ein Ampel Objekt schon in der Lasche Custom View & Layout.
Wenn ich es reinziehe bekomme ich den Fehler
Code:
java.lang.NullPointerException
at android.graphics.Canvas_Delegate.native_drawBitmap(Canvas_Delegate.java:836)
at android.graphics.Canvas.native_drawBitmap(Canvas.java:-1)
at android.graphics.Canvas.drawBitmap(Canvas.java:1066)
at com.example.ampel.Ampel.onDraw(Ampel.java:21)
at android.view.View.draw(View.java:13712)
at android.view.View.draw(View.java:13596)
at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
at android.view.View.draw(View.java:13594)
at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
at android.view.View.draw(View.java:13594)
at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
at android.view.View.draw(View.java:13715)
at android.view.View.draw(View.java:13596)
at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
at android.view.View.draw(View.java:13715)
Was ich aktuell versucht habe in der onDraw()
Code:
protected void onDraw(Canvas canvas) {
Bitmap b = BitmapFactory.decodeResource(getResources(), R.xml.ampel);
canvas.drawBitmap(b, 0, 0, null);
super.onDraw(canvas);
}
Hoffe jemand weis da besser bescheid als ich
Der ursprüngliche Beitrag von 15:39 Uhr wurde um 16:10 Uhr ergänzt:
Okay, sieht nicht so aus, als würde das so funktionieren, wie ich das gerne hätte.
Die XML Attribute stehen alle unter Unknown, hatte das überlesen.
Kann die XML-Datei auch nicht in ein Drawable umwandeln.
Sehr schade.
Gibt es denn Programme, mit denen man grafische Objekte zeichnen, und diese dann in einer "Android-Konformen" Technik importieren kann?