Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Tutorial Rotating Dialer

Das Thema "Tutorial Rotating Dialer" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 19.12.2011, 23:27   #1 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard Tutorial Rotating Dialer

Hallo,

ich bin schon länger in der Android Welt unterwegs und helfe auch ab und zu hier im Forum. Nun habe ich ein Tutorial für Mobile Tuts geschrieben. Darin zeige ich, wie man recht leicht mit Hilfe des SDKs eine rotierende Animation erzeugen kann (siehe meine Shutdown App in der Signatur).

Ich hoffe das Tutorial interessiert den ein oder anderen. Über Anregungen und ein Feedback würde ich mich freuen

Android SDK: Creating a Rotating Dialer
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei v Ralle v für diesen Beitrag:
DieGoldeneMitte (20.12.2011)
Alt 20.12.2011, 12:42   #2 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Tutorial Rotating Dialer

Super, aber was hast du gegen java.lang.Math.atan2 ?
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.
DieGoldeneMitte ist offline   Mit Zitat antworten
Alt 20.12.2011, 14:17   #3 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Tutorial Rotating Dialer

Im Prinzip nichts ^^ Wie hätte sich die Berechnung vom Winkel verkürzt?
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 20.12.2011, 16:14   #4 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Tutorial Rotating Dialer

Erstmal wird daraus das folgende: (Bin deinen Code jetzt nicht soweit durchgegangen, ob man den angle<0 braucht)

Code:
private double getAngle(double xTouch, double yTouch) {
  double x = xTouch - (dialerWidth / 2d);
  double y = dialerHeight - yTouch - (dialerHeight / 2d);
  double angle = Math.atan2(y,x) * 180 / Math.PI;
  if( angle<0 ) angle += 2 * Math.PI;
  return angle;
}
Und bei dem onFling könnte man vermutlich auch was machen, indem man den Angle vom Event
ausrechnet und dann guckt, ob der Winkelunterschied >180 (modulo 360) ist. Aber dazu muss ich
das Tutorial erstmal richtig ausprobieren.

(habe mal was ähnliches nur ohne Fling gemacht)

ADD: in deinem Download ist ein Tutorial.apk zu viel drinne.
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.

Geändert von DieGoldeneMitte (20.12.2011 um 16:25 Uhr)
DieGoldeneMitte ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei DieGoldeneMitte für diesen Beitrag:
v Ralle v (20.12.2011)
Alt 20.12.2011, 16:43   #5 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Tutorial Rotating Dialer

Oh das sieht schlanker aus. Muss ich demnächst mal so auprobieren.

Ich glaube, die haben das Paket selber nochmal zusammengepackt, daher eine .apk zu viel. Sollte aber nicht stören ^^
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 20.12.2011, 16:59   #6 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Tutorial Rotating Dialer

Noch ein paar Anmerkungen:

  • Das Bild ist arg groß (1024x0124) - das kann gerade auf einem kleinen Handy (wie meinem Nexus One) zu Abstürzen führen, weil der Speicher ausgeht. 512x512 tuts auch :-)
  • Du hast da einige Instanz-Variablen static definiert, das kann zu Problemen führen, wenn das Handy gedreht wird und App neu gestartet wird. Bei mir führte das dazu, dass der Dialer zu "eiern" anfing also nicht in die Mitte gezeichnet wurde.
  • Im onGlobalLayout() (danke, den Listener kanne ich noch garnicht) würde ich die Resourcen neu aufbauen, wenn sich die Werte ändern (also nicht auf ==0 sondern auf !=dialer.get*() prüfen.) dann kann man im Manifest auch orientationChange setzen.
  • natürlich muss man in diesem Fall die Matrix resetten
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.
DieGoldeneMitte ist offline   Mit Zitat antworten
Alt 20.12.2011, 18:21   #7 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Tutorial Rotating Dialer

Du scheinst dich mit dem Tutorial zu beschäftigen, das gefällt mir ^^

Zu der Grafik: das habe ich im Tutorial begründet Damit werden alle Bildschirmgrößen (auch Tablets) abgedeckt und man hat die Grafik nur einmal. Das hilft der Größe der .apk. Es ist wie gesagt nur eine Demo. Hast aber Recht, bei sehr kleinen Geräten kann das zu groß sein und sie können sich ja keine ldpi Datei holen.

static sind nur die Grafiken und die Matrix, keine andere Variable. Bei denen macht es natürlich auch Sinn (siehe Kommentare im Code). Welche Variablen meinst du denn? Der Dialer eiert in der Mitte des Tutorials, aber nicht am Ende, wird eigentlich auch beschrieben.

Punkt 3 ist Designsache. Bei einen orientationChange wird auch eine neue Activity erzeugt, daher sind die Membervariablen wieder 0. Ich denke, daher geht die Abfrage auch in Ordnung. Hast aber mit dem Manifest recht. Nur wollte ich es so lassen, weil ich am Anfang auch sage, dass man verschiedene andere Views einbinden kann. Was passiert, wenn sich die Landscape Varianter unterscheidet? Daher habe ich es gleich komplett gemacht.

Dennoch danke für die Anmerkungen
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 20.12.2011, 18:56   #8 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Tutorial Rotating Dialer

Zitat:
Zitat von v Ralle v Beitrag anzeigen
Der Dialer eiert in der Mitte des Tutorials, aber nicht am Ende, wird eigentlich auch beschrieben.
Nein, bei mir eiert die fertige App. Mit eiern meine ich nicht rückwärts drehen oder sowas, sondern dass sich der Ring zwar um den Mittelpunkt des Bildschirms dreht (und auch um den richtigen Winkel gedreht wird), aber nicht zentriert in die Mitte des Bildschirms gemalt wird.

Es liegt an dem static vor Matrix. Die aktiven ge post'eten Threads der alten Activity pfuschen in der Matrix der neuen Activity herum. Passiert natürlich nur, wenn man rotiert, während der Fling läuft. (Mach mal ein Log.d("tutorial",this.toString()); im rotateDialer, dann sieht man es).

Zitat:
Punkt 3 ist Designsache.
Ist klar, ich bin halt mehr von der vorbereitenderen Sorte.
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.

Geändert von DieGoldeneMitte (20.12.2011 um 19:03 Uhr)
DieGoldeneMitte ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei DieGoldeneMitte für diesen Beitrag:
v Ralle v (20.12.2011)
Alt 20.12.2011, 21:58   #9 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Tutorial Rotating Dialer

Ja, du hast recht mit dem Eiern. So sehr hatte ich es dann doch nicht getestet ^^ Aber wie du bereits angemerkt hast: die Matrix als Membervariable deklarieren. Man könnte aber auch (ohne es getestet zu haben), die onDestroy Methode überschreiben und die allowRotating Variable auf false setzen. Sollte ressourcenschonender sein. Dennoch danke für den Bug, den muss ich in meiner App ausbessern

Wenn du magst, kannst du deine Methode aus der Nachricht auch noch hier posten. Die sieht nämlich wesentlich besser aus als meine
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 21.12.2011, 08:57   #10 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Tutorial Rotating Dialer

Zitat:
Zitat von v Ralle v Beitrag anzeigen
Man könnte aber auch (ohne es getestet zu haben), die onDestroy Methode überschreiben und die allowRotating Variable auf false setzen.
Naja, Matrix ist kein besonderes fettes Objekt, da darf man schon pro Drehung eins erzeugen, wenn gleichzeitig ohnehin 3MB an Pixeldaten neu skaliert

Zitat:
Wenn du magst, kannst du deine Methode aus der Nachricht auch noch hier posten. Die sieht nämlich wesentlich besser aus als meine
Okay, here we go:

Code:
    private final static float FLING_SPEED = 0.4;

    private class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    
            double x1 = e1.getX() - (dialerWidth / 2);
            double y1 = dialerHeight - e1.getY() - (dialerHeight / 2);
            
            double x2 = e2.getX() - (dialerWidth / 2);
            double y2 = dialerHeight - e2.getY() - (dialerHeight / 2);
            
            float speed = (float)(Math.sqrt( velocityX * velocityX + velocityY * velocityY ) * FLING_SPEED);

            float dir = (float)Math.signum( y1 * x2 - x1 * y2 );
            // Berechnung der Orientierung der Drehung anhand der Determinate von
            // Anfang und Ende des Flings.
            
            dialer.post( new FlingRunnable( dir * speed ));
            
            return true;
        }
    }
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.
DieGoldeneMitte ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Sense Dialer? maXTC Kommunikation 2 06.10.2011 10:18
Eigener Dialer Peter123 Android App Entwicklung 3 15.08.2011 18:06
Dialer Problem Kinghariii Root / Hacking / Modding für Samsung Galaxy S 17 21.04.2011 22:49
[Dialer-Theme] Noble Glass Dialer (Black & White) regedy1 Themes für Samsung Galaxy S 108 09.04.2011 15:07




Du liest gerade: "Tutorial Rotating Dialer" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.