2010-12-14 8 views
7

Nella schermata iniziale di Android è possibile eliminare gli elementi trascinandoli nel contenitore.Come ottenere il comportamento di homescreen del trascinamento in bin, nella mia applicazione?

Mi piacerebbe avere funzionalità simili nella mia applicazione, in cui ho una vista con elementi di visualizzazione personalizzati che voglio essere trascinandoli e trascinandoli.

Esiste un modo semplice per implementare questa funzionalità? O qualcuno potrebbe darmi dei suggerimenti che possano guidarmi sul modo forse più difficile per raggiungere questo obiettivo?

+0

dolce .. Vorrei sapere come fare anche questo .. Lasciami fare qualche ricerca ti risponderò se trovo qualcosa. – Shardul

+0

Bello! Ho una prova di concetto funzionante ora. Sono interessato alla tua implementazione. – Peterdk

+1

L'applicazione di avvio in Android a cui si fa riferimento è open source. Penso che potresti essere in grado di imparare dalla loro implementazione guardando il codice sorgente. http://android.git.kernel.org/?p=platform/packages/apps/Launcher.git;a=summary –

risposta

1

Suppongo che tu abbia un'applicazione simile a una schermata iniziale, almeno una vista con elementi che desideri trascinare e rilasciare.

Come Austyn Mahoney dice nel suo commento è possibile refere per l'android open source codice homescreen. Ma dal momento che il drag and drop è una funzionalità facile da implementare, puoi gestirlo da solo.

È necessario archiviare gli articoli in es. un array . Quindi passa attraverso i tipi di eventi.

Ogni ACTION_DOWN è necessario verificare se un elemento è stato colpito dall'utente. Per esempio. se abbiamo cerchi come elementi dobbiamo catturare le coordinate attuali di ACTION_DOWN in modo da poterle verificare all'interno dell'oggetto e ottenere l'ID dell'oggetto che l'utente sta per trascinare secondo le coordinate di ACTION_DOWN.

On ACTION_MOVE è sufficiente passare le coordinate xey attuali all'elemento per ridisegnarlo nella nuova posizione.

Bene, questa è solo la funzione di trascinamento della selezione. Ora è necessario verificare che l'articolo si trovi in ​​un settore specifico che si chiama bin. Quindi definisci un rettangolo sullo schermo. in ACTION_MOVE il tuo test l'elemento per essere all'interno di questa area, questo è tutto.

Solo qualche esempio di codice per il drag and drop:

public boolean onTouchEvent(MotionEvent event){ 
    int itemID = 0; 
    int X = (int)event.getX(); 
    int Y = (int)event.getY(); 

     switch(event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
       for(Items item : dragable_item){ 

        //center coords of the item 
        int centerX = item.getX() + 25; 
        int centerY = item.getY() + 25; 

        //calculate the distance (radius) from touch to item 

        //get item to drag 
        if(distance < 20){ 
         itemId = item.getID(); break; 
        } 
       } 
      break; 
      case MotionEvent.ACTION_MOVE: 
       if(itemID > 0){ 
        Items[itemID-1].setX(X-25); 
        Items[itemID-1].setY(X-25); 
       } 
      break; 
     } 
    } 
    invalidate(); return true; 
} 

Se bacchetta per scavare più nel codice di dare un'occhiata a anddev.org - drag and drop.

+0

Risposta molto informativa. – Peterdk

Problemi correlati