Autore Topic: [BETA] Ask the Wheel, piccola inutility  (Letto 1238 volte)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
[BETA] Ask the Wheel, piccola inutility
« il: 11 Agosto 2010, 11:18:37 CEST »
0
Ho cominciato a programmare Android quando mi sono iscritto a anddev.it, mi sono letteralmente nutrito dei vostri tutorial e snippet, ho fatto diversi esperimenti su applicazioni parziali anche moderatamente complesse, però rimane sempre l'incertezza del prodotto non finito. E allora per avere un po' di soddisfazione personale ho fatto la mia prima piccolissima applicazione completa. Perdonate la grafica poco curata e le poche funzionalità, ma diciamo che si tratta della prima beta funzionante.  :-)

Ask the Wheel
  • versione : 0.1 (beta)
  • descrizione : Fatevi una domanda, girate la ruota e avrete la risposta.
  • argomenti trattati : Animation, AnimationListener, TouchListener, OptionsMenu.
  • sorgenti : Ask the Wheel source code
  • min-sdk : 4

Pubblico il source con due scopi: (1) ricevere pareri e commenti, (2) essere d'aiuto a chi è principiante come me. L'ho pubblicato seguendo il tutorial di JD su mercurial, dovrei aver fatto tutto bene, ma fatemi sapere se ho sbagliato qualcosa anche in quello.



Note

Per creare l'animazione della ruota che gira ho usato una RotateAnimation abbinata ad una ImageView. Con questo approccio è molto semplice e compatto creare e gestire l'animazione completa, ma ho trovato praticamente impossibile far seguire alla ruota il dito che si sposta prima di far partire l'animazione. Forse usare ImageView non è la soluzione migliore, dovrei usare una SurfaceView e OnDraw?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Vytek

  • Translate Team
  • Utente junior
  • **
  • Post: 125
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Samsung S5
  • Sistema operativo:
    Windows 8.1
Re:[BETA] Ask the Wheel, piccola inutility
« Risposta #1 il: 11 Agosto 2010, 11:27:23 CEST »
0
Carinissimo. utile per comprendere molti argomenti che non avevo assolutamente capito. Grazie!!

Un saluto...

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:[BETA] Ask the Wheel, piccola inutility
« Risposta #2 il: 11 Agosto 2010, 19:58:48 CEST »
0
Stavo provando l'app, molto carina :)

Purtroppo però è andata in FC dopo 3-4 rotazioni. Ecco il logcat:

Codice: [Seleziona]
08-11 19:43:34.207: ERROR/AndroidRuntime(530): Uncaught handler: thread main exiting due to uncaught exception
08-11 19:43:34.226: ERROR/AndroidRuntime(530): java.lang.ArrayIndexOutOfBoundsException
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at com.bradipao.askwheel.AskWheel$1.onAnimationEnd(AskWheel.java:52)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.animation.Animation.getTransformation(Animation.java:721)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.animation.AnimationSet.getTransformation(AnimationSet.java:313)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.drawChild(ViewGroup.java:1391)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.View.draw(View.java:6277)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.View.draw(View.java:6277)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.View.draw(View.java:6277)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1883)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewRoot.draw(ViewRoot.java:1332)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1097)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.os.Looper.loop(Looper.java:123)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at android.app.ActivityThread.main(ActivityThread.java:4203)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at java.lang.reflect.Method.invokeNative(Native Method)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at java.lang.reflect.Method.invoke(Method.java:521)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
08-11 19:43:34.226: ERROR/AndroidRuntime(530):     at dalvik.system.NativeStart.main(Native Method)

Se ho ben capito pare che l'array di stringhe msg sia andato fuori indice:

Codice (Java): [Seleziona]
public void onAnimationEnd(Animation animation) {
            txtView.setText(msg[pos]);  //pos >= msg.length ??
         }

Ho poi eliminato i pixel bianchi dai bordi della ruota, trovi il file png in allegato.
Ti consiglio però di creare una ruota anche per le risoluzioni hdpi.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:[BETA] Ask the Wheel, piccola inutility
« Risposta #3 il: 11 Agosto 2010, 21:09:06 CEST »
0
Stavo provando l'app, molto carina :)

Purtroppo però è andata in FC dopo 3-4 rotazioni.
Se ho ben capito pare che l'array di stringhe msg sia andato fuori indice:

Codice (Java): [Seleziona]
public void onAnimationEnd(Animation animation) {
            txtView.setText(msg[pos]);  //pos >= msg.length ??
         }

Strano, teoricamente non dovrebbe mai accadere dato che:

Codice (Java): [Seleziona]
pos = (Math.round(dd) % 6);
Posso solo immaginare che, se uno tocca nuovamente la ruota mentre si sta ancora muovendo, l'evento OnAnimationEnd potrebbe partire mentre pos viene modificata. Potrebbe essere accaduta una cosa del genere?


Comunque grazie per l'assistenza e la "limatina" alla ruota, effettivamente avrei bisogno di perderci un po' di tempo dietro alla grafica.  :-P
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store