Autore Topic: Grafica indipendente dall'activity  (Letto 1338 volte)

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Grafica indipendente dall'activity
« il: 16 Novembre 2011, 11:28:59 CET »
0
Salve..sto cercando di creare un programmino e sono ora passata all'ambiente grafico. La mia applicazione lavora con layout .xml che ho creto io e adesso vorrei far muovere un oggetto indipendentemente da come aggiorno la grafica(riempo textview, riempo progress bar) del layout. Come potrei fare? ho provato a seguire e modificare il tutoria che ho trovato qui [facile] Grafica semplice tramite Canvas - Android Developers Italia ma il movimento del mio bitmap è vincolato agli aggiornamenti della layout. Spero di aver dato un idea generale e abbastanza chiara aspetto vostre notizie:)

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:Grafica indipendente dall'activity
« Risposta #1 il: 16 Novembre 2011, 11:42:11 CET »
0
Non so se ho ben capito la problematica, ma se il tuo scopo è avere una grafica costantemente animata, secondo me dovresti usare l'approccio dei "giochi" (thread parallelo che si occupa di ridisegnare costantemente la grafica). Non a caso hai inserito la domanda nella sezione Grafica 2D/3D.

Se però le tue animazioni sono abbastanza semplici e limitate (traslazioni e rotazioni) potresti usare le varie Animation fornite già dal framework.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #2 il: 16 Novembre 2011, 11:55:37 CET »
0
ho pensato anche io a fare andare su un'altro thread l'animazione solo che ho proprio questa problema.
per disegnare la mia pallina che va avanti e indetro(è questa la grafica eccezionale) ho creato come sul tutorial un file java con estensione View che mi gestisce la variazione delle coordinate dell'oggettino, solo che come detto non funziona bene:l'unico modo per aggiungere grafica è quello di usare questi file java con exted View non posso disegnare direttamente dall'exted activity? Adesso guarderò un po queste cose del framework;)

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:Grafica indipendente dall'activity
« Risposta #3 il: 16 Novembre 2011, 12:25:09 CET »
0
Mi spiace ma a parole non riesco a comprendere cosa hai fatto e come. E nemmeno capisco cosa intendi con "non funziona bene".

Per animare qualcosa si può:
- Usare le Animation sulle View
- Disegnare con Canvas su una SurfaceView (serve un thread)
- Disegnare con openGL (serve un thread)

Tu cosa stai usando?
Puoi postare il codice e indicare il punto che eventualmente funziona male e come dovrebbe invece funzionare?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #4 il: 16 Novembre 2011, 12:32:19 CET »
0
"non funziona bene".
scusa hai ragione ma è difficile anche per me spiegarmi.
Codice (XML): [Seleziona]
<com.maki.mambu.PingView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/pingView" android:scrollX="-12dp" android:scrollY="-185dp"></com.maki.mambu.PingView>
Ho aggiunto questo codice nella mia View e poi tramite un file che gestisce la view:
Codice (Java): [Seleziona]
public class PingView extends View {

       

        Bitmap pallina;
        Bitmap reticolo;
        Rect r;
        int x = 10;
        Timer timer;
       
        public PingView(Context context, AttributeSet attrs) {
                super(context, attrs);
                // TODO Auto-generated constructor stub
                reticolo = BitmapFactory.decodeResource(context.getResources(),R.drawable.pingreticolo);
                pallina = BitmapFactory.decodeResource(context.getResources(),R.drawable.pingpalla);
               
               
                Log.v("","fatto");
        }

        @Override
        protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                super.onDraw(canvas);  
                r=new Rect();
                r.set(0, 0, canvas.getWidth(), 250);
                Paint nblu=new Paint();
                nblu.setColor(Color.BLUE);
                canvas.drawRect(r, nblu);
                canvas.drawBitmap(reticolo, null, r, null);
                Log.v("","."+x);               
                if (x < canvas.getWidth()) {
                        x = x + 10;
                } else {
                        x = x - 10;
                }
                canvas.drawBitmap(pallina, x,(r.bottom-pallina.getHeight())/2, null);

        }

}

faccio muovere la bitmap avanti e indietro, il problema del funziona male è che va a scatti e poi una volta che il mio codice ha finito l'applicazione si blocca.
quindi penso di usare canvas ma non lo faccio partire mai dall'activity parte per i cavoli suoi penso per il fatto di aver aggiunto quelle righe all'xml

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #5 il: 16 Novembre 2011, 12:51:59 CET »
0
Ciao,
non sono esperto in questo argomento, ma non capisco dove usi il timer o altro per la ripetizione del movimento della pallina.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #6 il: 16 Novembre 2011, 12:53:26 CET »
0
Ciao,
non sono esperto in questo argomento, ma non capisco dove usi il timer o altro per la ripetizione del movimento della pallina.
scusa ho solo dimenticato di togliere la dichiarazione non lo uso mai.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #7 il: 16 Novembre 2011, 12:56:26 CET »
0
Ok.
Ma tu dici che la pallina finisce l'animazione e poi si blocca, ripeto non vedo dove sia il loop per far continuare l'animazione.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #8 il: 16 Novembre 2011, 13:03:01 CET »
0
il loop l'ho fatto all'inizio poi ho notato che la pallina si muoveva da sola senza che io facessi andare nessun loop.
Però adesso mi è venuta un illuminazione, la pallina si muove perchè gli altri elementi modificano la view e quindi danno il comando invalidate() che fa partire l'evento onDraw (se non sbaglio) che quindi fa muovere la pallina senza loop.
Se il mio ragionamento malato è simil vero devo solamente far chiamare l'evento a tempo costante, devo pensare come fare. il metodo invalidate() è l'unica che fa partire onDraw?

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #9 il: 16 Novembre 2011, 13:16:18 CET »
0
niente non sembra funzioni..... :'(

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:Grafica indipendente dall'activity
« Risposta #10 il: 16 Novembre 2011, 13:41:03 CET »
0
Come dice Luigi, sembra che la tua animazione sia in qualche modo impropria, nel senso che non ci sono loop per il ridisegno.

Prima di addentrarsi in altre soluzioni, come ti avevo accennato prima, per animazioni semplici come quella del tuo caso potresti provare a dare un'occhiata alle Animation.

Tutorial : developerlife – Tutorials    &raquo; Android Animation Framework Tutorial

Android : Animation | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #11 il: 16 Novembre 2011, 13:49:33 CET »
0
si infatti ho visto che stavo troppo partendo per la tangente, sto vedendo dei tutorial qua che parlano della grafica sono fatti molto bene, per chiunque possa servire:
Playing with graphics in Android – Part I on Android Development

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Grafica indipendente dall'activity
« Risposta #13 il: 21 Novembre 2011, 12:47:40 CET »
0
Allora sono riuscito a risolvere il mio problemi basandomi sul tutorial di Qlimax. Ora però devo passare a un'altra activity dove la grafica è un po più complicata:
ho di base un layout che mi fa vedere i dati elaborati e si aggiorna di continuo(poco importa) ora questo layout di partenza l'ho inserito come elemento nel tag
Codice: [Seleziona]
<FrameLayout></FrameLayout>in modo da aggiungere questo elemento a seguire
Codice: [Seleziona]
<com.maki.mambu.HttpView android:id="@+id/httpView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></com.maki.mambu.HttpView>che dovrebbe ospitare la mia grafica una pallina che si muove a dx e sx facendo vedere il vecchio layout sotto.
HttpView l'ho creata usando canvas ed è extends SurfaceView, non ho cicli non ce nè bisogno la grafica aggiornandosi fa spostare l'oggetto, il mio problema principale è far vedere quello che sta sotto la pallina!
grazie mi rimetto a voi :-)