1. iggi13, 22.07.2010 #1
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    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
     
  2. MichaelS, 22.07.2010 #2
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    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 ;)
     
  3. iggi13, 22.07.2010 #3
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    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.
     
  4. MichaelS, 22.07.2010 #4
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    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...
     
  5. DieGoldeneMitte, 22.07.2010 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Ich weiss auch nicht, wass an Canvas.rotate() so kompliziert sein soll. :D
     
  6. ko5tik, 22.07.2010 #6
    ko5tik

    ko5tik Android-Experte


    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);
    
     
  7. iggi13, 23.07.2010 #7
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    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
    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.

     
  8. DieGoldeneMitte, 23.07.2010 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    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"
     
  9. iggi13, 23.07.2010 #9
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    Danke für den Typ mit float.

    Habe nun
    Wird auch angezeigt wunderbar. Aber irgendwie wird es nicht in der "GoldenenMitte" angezeigt ;)
     
  10. iggi13, 09.08.2010 #10
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    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: 09.08.2010

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android drehender pfeil