1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

In Activity einen drehenden Pfeil zeichnen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von iggi13, 22.07.2010.

  1. iggi13, 22.07.2010 #1
    iggi13

    iggi13 Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.07.2010
    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

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    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

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.07.2010
    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

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    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

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Ich weiss auch nicht, wass an Canvas.rotate() so kompliziert sein soll. :D
     
  6. ko5tik, 22.07.2010 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero

    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

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.07.2010
    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

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    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

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.07.2010
    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

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.07.2010
    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

Diese Seite empfehlen