Как добраться, где мой палец, над каким макетом? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть блок, я перетаскиваю его куда-то, затем эта ячейка преобразуется в желтый, затем я покидаю эту ячейку, Она снова преобразуется в серый, но, Когда я ее где-то уронил Везде пурпурный, Как я могу нарисовать только этот блок Когда я уронил его , Вы можете проверить фотографии, чтобы понять мою проблему С наилучшими пожеланиями

public  boolean onDrag(View v,DragEvent event)
       {
           int action=event.getAction();

           switch (action)
           {
               case DragEvent.ACTION_DRAG_STARTED:
                   Log.i("Script",num+"-ACTION_DRAG_STARTED");
                   if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
                   {
                       return (true);
                   }
                   return (false);

               case DragEvent.ACTION_DRAG_ENTERED:
                   Log.i("Script",num+"-ACTION_DRAG_ENTERED");
                   v.setBackgroundColor(Color.YELLOW);
                   break;
               case DragEvent.ACTION_DRAG_LOCATION:
                    break;
               case DragEvent.ACTION_DRAG_EXITED:
                   v.setBackgroundColor(Color.GRAY);
                   break;
               case DragEvent.ACTION_DROP:
                   View view=(View) event.getLocalState();
                   ViewGroup owner=(ViewGroup) view.getParent();
                   owner.removeView(view);
                   LinearLayout container=(LinearLayout) v;
                   container.addView(view);
                   view.setVisibility(View.INVISIBLE);
                   break;

                   case DragEvent.ACTION_DRAG_ENDED:

                       v.setBackgroundColor(Color.MAGENTA);
                       break;
           }
           return true;
       }

Initial State

Drag and Exit State

Drop State

1 Ответ

0 голосов
/ 04 мая 2018

В DragEvent.ACTION_DRAG_ENDED событии вы должны найти view.getX() и view.getY(). Это вернет координаты x и y в пикселях, после чего в соответствии с вашим требованием вы должны рассчитать ближайший вид, занимающий эти блоки, и изменить его цвет на MAGENTA.

...