[android] ConstraintLayout에서의 아이템 드래그 앤 드롭 설정
안녕하세요! 이번 포스팅에서는 ConstraintLayout에서의 아이템 드래그 앤 드롭 설정에 대해 알아보겠습니다.
드래그 앤 드롭 설정하기
ConstraintLayout에서의 아이템 드래그 앤 드롭 기능을 구현하려면 OnTouchListener를 사용하여 터치 이벤트를 처리해야 합니다.
item.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 드래그 앤 드롭 이벤트 처리
return true;
}
});
앞서 제시한 코드에서 item은 드래그 앤 드롭을 적용하고자 하는 View를 나타내며, 해당 뷰에 대한 터치 이벤트를 처리하는 리스너를 등록합니다.
이제 드래그 앤 드롭 이벤트를 처리하는 부분에 원하는 동작을 추가하면 됩니다.
제약 조건 수정하기
아이템을 드래그하여 새로운 위치에 놓았을 때, ConstraintLayout 내에서 해당 아이템의 위치를 수정해야 합니다.
item.setOnTouchListener(new View.OnTouchListener() {
private int dx, dy;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dx = (int) event.getX();
dy = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = (int) event.getRawX() - dx;
int newY = (int) event.getRawY() - dy;
// 아이템의 위치를 newX, newY로 수정
ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) item.getLayoutParams();
layoutParams.leftMargin = newX;
layoutParams.topMargin = newY;
item.setLayoutParams(layoutParams);
break;
}
return true;
}
});
위 코드에서는 아이템을 드래그하여 새로운 위치에 놓았을 때, 해당 위치로 아이템의 제약 조건을 수정합니다.
이제 ConstraintLayout에서 아이템의 드래그 앤 드롭을 구현하는 방법에 대해 알아보았습니다. 원하는 동작을 추가하고 수정하여 여러분의 어플리케이션에 적용해 보세요!
더 많은 정보를 얻고 싶으시다면, Android Developer 공식 문서를 참고해보시기 바랍니다.
감사합니다!