2010-12-14 8 views
7

En la pantalla de inicio de Android, es posible eliminar los elementos arrastrándolos al contenedor.¿Cómo obtener el comportamiento de la pantalla de inicio de arrastrar a bin, en mi propia aplicación?

Me gustaría tener una funcionalidad similar en mi propia aplicación, donde tengo una vista con elementos de vista personalizada que quiero que el usuario arrastre y suelte.

¿Existe alguna manera fácil de implementar esta funcionalidad? ¿O alguien podría darme consejos que puedan orientarme sobre la forma posiblemente más difícil de lograr esto?

+0

dulce .. me gustaría saber cómo hacer eso también Permítanme investigar un poco, me pondré en contacto con usted si encuentro algo. – Shardul

+0

¡Agradable! Tengo una prueba de concepto que funciona ahora. Estoy interesado en tu implementación. – Peterdk

+1

La aplicación de inicio en Android a la que te refieres es de código abierto. Creo que puede aprender de su implementación mirando el código fuente. http://android.git.kernel.org/?p=platform/packages/apps/Launcher.git;a=summary –

Respuesta

1

Supongo que tiene una aplicación de pantalla de inicio, al menos una vista con elementos que desea arrastrar y soltar.

Como Austyn Mahoney dice en su comentario que puedes referir al código de inicio open source. Pero como arrastrar y soltar es una función fácil de implementar, también puede manejarlo usted mismo.

Necesita que sus elementos se almacenen, p. una matriz . Luego revisa los tipos de eventos.

En cada ACTION_DOWN necesita comprobar si un artículo fue golpeado por el usuario. P.ej. si tenemos círculos como elementos, necesitamos capturar las coordenadas ACTION_DOWN actuales para que podamos verificar que estén dentro del elemento y obtener la ID del artículo que el usuario está a punto de arrastrar de acuerdo con las coordenadas ACTION_DOWN.

En ACTION_MOVE solo necesita pasar las coordenadas xey actuales para volver a dibujar en la nueva posición.

Bueno, esto es solo la función de arrastrar y soltar. Ahora necesita probar que el artículo esté en un sector específico al que llama bin. Entonces defines un rectángulo en tu pantalla. en ACTION_MOVE tu prueba es que el elemento esté dentro de esta área, eso es todo.

Sólo un código de ejemplo para arrastrar y soltar:

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; 
} 

Si varita para excavar más en el código de echar un vistazo a anddev.org - drag and drop.

+0

Respuesta muy informativa. – Peterdk

Cuestiones relacionadas