Tonslzi
- Forum-Beiträge: 1
03.11.2012, 18:30:36 via Website
03.11.2012 18:30:36 via Website
Hallo Liebe Entwicklergemeinde,
ich bin leider noch Anfänger, also nehmt es mir bitte nicht übel wenn ich mist gebaut habe :-)
Was ich machen will:
- zu meinem aktuellen Layout hinzufügen: Eine Darstellung von einem Button und einer Linie mit einer Canvas.
- Wenn der User den Button drückt (OnClickListener) soll die Linie z.B. in Ihrer Länge verändert werden.
Was nicht funktioniert:
- Die Linienlänge nach dem ersten Zeichnen der Grafik (der Linie) verändern.
Was bereits funktioniert:
- Canvas ist ins Layout integriert
- Beim Start wird die Linie mit dem Initialisierungswert gezeichnet
Logik nach der ich gearbeitet habe:
- Klasse Drawing implementiert, welche View erweitert und die Methode onDraw anpasst.
- in die Methode "onDraw()" den Methodenaufruf "invalidate()" eingefügt (dieser hällt die Methode "onDraw" in einer Schleife?)
- ein View im XML erstellt mit dem namen der Klasse Drawing
- Button im XML implementiert und onClickListener in meiner MainActivity gesetzt
Was ich nicht verstehe:
-Warum wird beim ersten Aufruf überhaupt die Zeichnung schon dargestellt?
Ich dachte die Klasse "Drawing" liefert nur den Container für zukünftige Objekte?
-Da ich kein Objekt Drawing besitze kann ich auch nicht die Länge zuweisen,
Probeweise habe ich auch folgenden Code in meine Activity eingefügt, hat aber nicht funktioniert:
Drawing myDrawing;
myDrawing=new Drawing(this,50);
myDrawing.setLength(200);
Der Code:
Layout.XML:
Klasse Drawing.java:
und meine Activity:
Zur Info: zur Übersichtlichkeit habe ich für das Problem nicht relevante codezeilen entfernt
ich bin leider noch Anfänger, also nehmt es mir bitte nicht übel wenn ich mist gebaut habe :-)
Was ich machen will:
- zu meinem aktuellen Layout hinzufügen: Eine Darstellung von einem Button und einer Linie mit einer Canvas.
- Wenn der User den Button drückt (OnClickListener) soll die Linie z.B. in Ihrer Länge verändert werden.
Was nicht funktioniert:
- Die Linienlänge nach dem ersten Zeichnen der Grafik (der Linie) verändern.
Was bereits funktioniert:
- Canvas ist ins Layout integriert
- Beim Start wird die Linie mit dem Initialisierungswert gezeichnet
Logik nach der ich gearbeitet habe:
- Klasse Drawing implementiert, welche View erweitert und die Methode onDraw anpasst.
- in die Methode "onDraw()" den Methodenaufruf "invalidate()" eingefügt (dieser hällt die Methode "onDraw" in einer Schleife?)
- ein View im XML erstellt mit dem namen der Klasse Drawing
- Button im XML implementiert und onClickListener in meiner MainActivity gesetzt
Was ich nicht verstehe:
-Warum wird beim ersten Aufruf überhaupt die Zeichnung schon dargestellt?
Ich dachte die Klasse "Drawing" liefert nur den Container für zukünftige Objekte?
-Da ich kein Objekt Drawing besitze kann ich auch nicht die Länge zuweisen,
Probeweise habe ich auch folgenden Code in meine Activity eingefügt, hat aber nicht funktioniert:
Drawing myDrawing;
myDrawing=new Drawing(this,50);
myDrawing.setLength(200);
Der Code:
Layout.XML:
1<de.test.hello.Drawing
2 android:id="@+id/drawing1"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"/>
2 android:id="@+id/drawing1"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"/>
Klasse Drawing.java:
1public class Drawing extends View {
2 Paint paint = new Paint();
3 private int linelength=0;
4 private boolean showDrawing=true;
5
6 public Drawing(Context context, int i) {
7 super(context);
8 paint.setColor(Color.BLUE);
9 }
10
11 public Drawing(Context context, AttributeSet attrs) {
12
13 super( context, attrs );
14 }
15
16 public Drawing(Context context, AttributeSet attrs, int defStyle) {
17
18 super( context, attrs, defStyle );
19 }
20
21 public void setLength(int i_laenge)
22 {
23 linelength=i_laenge;
24 }
25
26 @Override
27 protected void onDraw(Canvas canvas) {
28 canvas.drawLine(10, 10, linelength, 50, paint);
29 invalidate();
30 }
31
32}
2 Paint paint = new Paint();
3 private int linelength=0;
4 private boolean showDrawing=true;
5
6 public Drawing(Context context, int i) {
7 super(context);
8 paint.setColor(Color.BLUE);
9 }
10
11 public Drawing(Context context, AttributeSet attrs) {
12
13 super( context, attrs );
14 }
15
16 public Drawing(Context context, AttributeSet attrs, int defStyle) {
17
18 super( context, attrs, defStyle );
19 }
20
21 public void setLength(int i_laenge)
22 {
23 linelength=i_laenge;
24 }
25
26 @Override
27 protected void onDraw(Canvas canvas) {
28 canvas.drawLine(10, 10, linelength, 50, paint);
29 invalidate();
30 }
31
32}
und meine Activity:
1@Override
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4
5 setContentView(R.layout.activity_hello_workshop);
6 }
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4
5 setContentView(R.layout.activity_hello_workshop);
6 }
Zur Info: zur Übersichtlichkeit habe ich für das Problem nicht relevante codezeilen entfernt
— geändert am 03.11.2012, 18:34:46
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.