[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 공식 문서를 참고해보시기 바랍니다.

감사합니다!