[android] ConstraintLayout에서의 레이아웃 상태 저장 및 복원

안드로이드 앱을 개발할 때 사용자가 앱을 닫았다가 다시 열었을 때 이전 상태로 레이아웃을 복원해야 하는 경우가 있습니다. 이를 위해서는 ConstraintLayout에서의 레이아웃 상태를 저장하고 복원하는 방법을 알아야 합니다.

상태 저장

ConstraintLayout에서의 레이아웃 상태를 저장하고 복원하기 위해서는 onSaveInstanceState 메소드를 사용해야 합니다. 이 메소드는 Activity나 Fragment가 소멸되기 전에 호출되며, 여기에서 레이아웃의 상태를 저장할 수 있습니다.

아래는 onSaveInstanceState 메소드를 사용하여 ConstraintLayout의 레이아웃 상태를 저장하는 예시입니다.

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    int[] layoutState = new int[2];
    layoutState[0] = myConstraintLayout.getWidth();
    layoutState[1] = myConstraintLayout.getHeight();
    outState.putIntArray("layoutState", layoutState);
}

상태 복원

앱이 다시 시작되고 레이아웃 상태를 복원해야 할 때는 onCreateonRestoreInstanceState 메소드에서 저장된 레이아웃 상태를 읽어와서 적용해주어야 합니다.

아래는 onRestoreInstanceState 메소드를 사용하여 ConstraintLayout의 레이아웃 상태를 복원하는 예시입니다.

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    int[] layoutState = savedInstanceState.getIntArray("layoutState");
    if (layoutState != null) {
        myConstraintLayout.getLayoutParams().width = layoutState[0];
        myConstraintLayout.getLayoutParams().height = layoutState[1];
    }
    myConstraintLayout.requestLayout();
}

이렇게 함으로써 ConstraintLayout에서의 레이아웃 상태를 저장하고 복원할 수 있습니다.

결론

ConstraintLayout에서의 레이아웃 상태를 저장하고 복원하기 위해서는 onSaveInstanceState와 onRestoreInstanceState 메소드를 사용하여 레이아웃의 상태를 저장하고 복원해주어야 합니다. 이를 통해 사용자가 앱을 닫았다가 다시 열었을 때 이전 상태로 레이아웃을 복원할 수 있습니다.

참고: Android Developer - Saving Activity state