0
안드로이드 drag and drop을 내 gridview에 적용하려고합니다. 그리드 어댑터의 각 뷰에 dragListener를 설정했습니다. 눈금이 스크롤 할 수있을만큼 길지 않거나 눈금의 첫 번째보기가 표시되는 한 스크롤 할 수있는 경우 완벽하게 작동합니다. 스크롤하면 정확한 위치가 아니라 많은보기가 맨 위에 표시되지 않기 때문에 위치를 아래로 이동합니다. 어댑터의 내부Android 끌어서 놓기 GridView
의 GridView 설정 DragListener :
ImageView i = new ImageView;
i.setImageResource(ImageList.get(position));
i.setOnDragListener(new MyDragImageListener(position));
return i;
MyDragListener : 어떻게 터치 이벤트를 처리하는
public class MyDragImageListener implements OnDragListener{
int imagePosition;
public MyDragImageListener(int position) {
imagePosition = position;
}
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.i("DRAG Started", "" + imagePosition);
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.i("DRAG Entered", "" + imagePosition);
ImageView imageEnter = (ImageView) Grid.getChildAt(imagePosition);
imageEnter.setBackgroundColor(Color.argb(155, 100, 200, 255));
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.i("DRAG Exited", "" + imagePosition);
ImageView imageExit = (ImageView) Grid.getChildAt(imagePosition);
imageExit.setBackgroundColor(Color.argb(0, 0, 0, 0));
break;
case DragEvent.ACTION_DROP:
Log.i("DRAG Dropped", "" + imagePosition);
break;
case DragEvent.ACTION_DRAG_ENDED:
Log.i("DRAG Ended", "" + imagePosition);
default:
break;
}
return true;
}
}
DragEvent가 screenPosition을 반환하고 절대 위치 또는 다른 방향으로 예상한다고 말하고 싶습니까? 왜 당신은 그 스크롤 위치를 얻고 오프셋을 사용합니다. –
덕분에 이것을 시도해 보았습니다. 방금 드래그 앤 드롭을 사용하여 훨씬 더 복잡한 솔루션이 될 것이라고 생각하고이를 사용하려고 생각하지 않았습니다. – cange1