In Activity einen drehenden Pfeil zeichnen

I

iggi13

Neues Mitglied
0
Hallo,

ich würde gerne in mitten einer Activtiy einen drehende Pfeil zeichnen wollen.
Dabei sollen die restlichen GUI-Element "ganz" normal platziert werden.
Der Pfeil gibt die Richtung der GPS-Koordinaten an. Der Rest des Programms steht soweit außer die GUI.

Hat jemand eine Idee? Ich habe so etwas ähnliches schon einmal mit einer View und einem Canvas gemacht, aber wie gesagt möchte ich auf dieser Ansicht auch noch weitere "normale" GUI-Elemente, wie Textfelder, einbauen.

vg iggi
 
was spricht dan gegen canvas? einfach ne klasse schreiben, der du die methode zum rendern überschreibst und fertig ;) die klasse erbt natürlich von View und kan so überall eingesetzt werden =) kein hexenwerk ;)
 
Ich wollte mich aber nicht um die Positionierung von den weiteren Textfeldern kümmern, sondern das von dem LayoutManager der Activity übernehmen lassen. Sonst fange ich ja an, die GPS-Position auch zu zeichnen, oder?

Gibt es da nicht einen Weg ein Bild einzufügen und das zu drehen? Aber dann sind wir schon wieder an dem OpenGL dran, denke ich mal.
 
arg du machst mich schwach ;D habs doch erklärt wie es geht... Du machst ne Klasse, die von View erbt und überschreibst das Rendern dieser einen View... Diese Klasse fügst du dan deiner Activity hinzu in nen Layout deiner Wahl...
 
Ich weiss auch nicht, wass an Canvas.rotate() so kompliziert sein soll. :D
 
iggi13 schrieb:
Gibt es da nicht einen Weg ein Bild einzufügen und das zu drehen? Aber dann sind wir schon wieder an dem OpenGL dran, denke ich mal.


Definiere mal eine Animation auf deinen Object, und es wird sich drehen (und nicht nur) bis dir schwindlich ist.

Das zwingt meine Kugeln für immer zu hüpfen:
Code:
    <translate  xmlns:android="http://schemas.android.com/apk/res/android" android:repeatCount="infinite" android:repeatMode="reverse"
            android:fromXDelta="0"
            android:fromYDelta="0"
            android:toXDelta="0"
            android:toYDelta="-3"
            android:duration="150"
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>

Und im Code (in einen View):
Code:
      wobble = AnimationUtils.loadAnimation(context, R.anim.jump);
      startAnimation(wobble);
 
Danke für die Antworten.
Habe bis jetzt weniger mit GUI und Android gemacht. Also nur Java ;)
Naja bissel in einer TextView angezeigt und so...

Habe mir jetzt ne View erstellt
public class DirectionView extends View {
//...
protected void onDraw(Canvas canvas) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.pfeil);
Paint paint = new Paint();
canvas.drawBitmap(bitmap, new Float(0.), new Float(0.6), paint);
}
}

Doch wie bekomme ich das nun in das Layout gepackt?
Wenn ich es im Quellcode mit setContentView mache, dann wird der Pfeil angezeigt. Aber würde es wie gesagt, gerne in die Mitte der ersten Actitvity platzieren.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/widget33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff009900"
>
</TextView>

</LinearLayout>
 
Wenn Du selber einen View bauen willst, kannst Du den mit seinem vollen Klassennamen (also mit Paketnamen) im XML spezifizieren. (Ggf auch noch onMeasure und onLayout überladen)

Code:
<com.meine.widgets.DirectionView
   ... attribute ...
/>
Achja, und anstatt "new Float(0.0)" schreibt man in Java "0.0f"
 
Danke für den Typ mit float.

Habe nun
<de.fhhannover.DirectionView
android:id="@+id/DirectionView"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></de.fhhannover.DirectionView>

Wird auch angezeigt wunderbar. Aber irgendwie wird es nicht in der "GoldenenMitte" angezeigt ;)
 
Hallo,

kann mir keiner sagen, warum der Pfeil, denen ich einer DirectionView zeichne oben links ist statt in der Mitte des Bildschirms?

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">
<TextView
android:id="@+id/TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff009900"
>

</TextView>

<ProgressBar
        android:id="@+id/ProgressBar01"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"></ProgressBar>
<de.fhhannover.DirectionView
android:id="@+id/DirectionView"
android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
></de.fhhannover.DirectionView>

</RelativeLayout>

Code:
protected void onDraw(Canvas canvas) {
		
	
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
				R.drawable.pfeil);
		Paint paint = new Paint();



		canvas.save();

		canvas.rotate((float) mDrehung, bitmap.getWidth() / 2, bitmap
				.getHeight() / 2);
		
		canvas.drawBitmap(bitmap, 0.f, 0.f, paint);
	
		canvas.restore();


	}

Komischerweise wird die Progressbar schön in der Mitte angezeigt, doch nicht der Pfeil der in der DirectionView gezeichnet wird. Muss ich dem Canvas noch mitteilen, ab wo er zeichnen soll?
 
Zuletzt bearbeitet:

Ähnliche Themen

OnkelLon
Antworten
13
Aufrufe
1.974
OnkelLon
OnkelLon
D
Antworten
23
Aufrufe
2.514
Data2006
D
M
Antworten
8
Aufrufe
952
deek
D
Zurück
Oben Unten