2013-01-21 7 views
18

Sto cercando di sviluppare un'app personalizzata (con un numero illimitato di pagine iniziali) e ho bisogno di implementare Drag and Drop come fatto in Launcher2 (Android 4.2).Utilizzo del framework Android Drag and Drop nell'app My Launcher personalizzata

Così ho trovato due approcci

1) Drag and Drop framework
2) Utilizzare il modo launcher2 Android come implementazione DragController, DragSource come spiegato here.

Ma non riesco a capire perché i ragazzi Android non hanno utilizzato il framework Drag and Drop sviluppato da loro nella propria applicazione. Qualcuno può brevemente su possibili motivazioni dietro il loro approccio? (Voglio dire in termini di memoria/prestazioni)

Grazie in anticipo.

+1

Ciao, ho anche trovato i due approcci per questo. c'è qualche ragione dietro di esso. – Muthuraj

risposta

2

Il trascinamento in Android Launcher viene eseguito come disegno Overlay all'interno dello stesso ViewGroup e nella stessa finestra. Ma l'approccio di trascinamento della selezione di Android crea una finestra separata con un tipo di finestra separato del tutto.

L'approccio di trascinamento e rilascio Android standard di risorse e memoria è più costoso.

Se le prestazioni sono molto critiche il mio suggerimento è andare come per Android Launcher, altrimenti preferisco l'approccio standard di Android è facile e semplice.

+0

Puoi spiegare più "Sovrapposizione di disegni all'interno dello stesso ViewGroup e nella stessa finestra", qui ti sto ponendo una domanda molto simile: http: // StackOverflow .com/questions/29410875/drag-and-drop-icons-to-home-screen –

+0

Acquista il metodo dispatchDraw nel ViewGroup.java. Nel tuo layout basta sovrascrivere il metodo dispatchdraw e disegnare la tua immagine bitmap dopo aver chiamato super.dispatchdraw(). Questo renderà la tua bitmap in primo piano.Se cambi le posizioni del disegno bitmap in base alle posizioni touch dell'utente, vedrai Effetto trascinamento. – manjusg

0

Il framework di trascinamento è sice api 11. La mia ipotesi è, molto codice per il programma di avvio è stato scritto prima, e nessuno ha avuto il tempo di rifattorizzarlo ancora. Ma api funziona come il secondo approccio.

0

http://javapapers.com/android/android-drag-and-drop/. Questo è il miglior esempio di trascinamento e rilascio poiché ho implementato lo stesso nella mia applicazione. Nota: supporterà le versioni solo sopra 11. La funzionalità di trascinamento della selezione non supporterà la versione 10. Invece dovrai spostare i campi in un layout assoluto settando i posizionamenti X e Y. Ma il layout assoluto è completamente deprecato ...

0

Dovresti usare WindowManaager per controllare Drag And Drop se la tua Applicazione non è così complessa. È facile da implementare e funziona sulla posizione modificata. ottenere il codice Here

3

Il framework di trascinamento della selezione Android è molto semplice rispetto a quello utilizzato nell'app Launcher.

L'app Launcher ha una miriade di "livelli" e il trascinamento si verifica tra questi livelli, vale a dire DragLayer, Area di lavoro e Tutte le app visualizza ecc. Usa i flag delle finestre e aggiunge/rimuove dinamicamente le viste sul DragLayer quando un trascinamento è in corso e una moltitudine di attività monitora il trascinamento. Per maggiori dettagli guarda in particolare i file DragLayer.java e Workspace.java.

+0

puoi spiegare meglio il meccanismo di una miriade di "strati", ho posto una domanda qui: http://stackoverflow.com/questions/29410875/drag-and-drop-icons-to-home-screen –

+0

da preciso, ho bisogno di aggiungere app alla schermata principale (area di lavoro) proprio come launcher3 –