본문 바로가기

안드로이드/팁

[Android] 폴더블 대응기

반응형

폴더블폰을 사용해 보면서 운영중인 앱이 잘 동작하는지 아래 2가지를 중점적으로 확인했습니다.

 

1. 접거나 펼쳤을때 보던 화면이 동일하게 보여지는지

2. 펼쳤을때 화면을 효율적으로 활용하는 방법 ( ex 카톡 : 채팅 리스트와 상세를 한 화면에  ) 

 

커버 화면에서 앱 계속 사용 

먼저 펼쳤을땐 괜찮은데 접었을땐 앱이 유지되지 않고 잠금화면이 노출 되는 현상이 있었습니다.

먼저 접었을때 보던 앱 화면이 유지되려면 디바이스 설정을 확인해야 합니다.

 

'설정 > 디스플레이 > 커버 화면에서 앱 계속 사용 '

 

'크기 조절이 지원되지 않음' 으로 표시되어 있는 경우 AndroidManifest.xml에  resizeableActivity 옵션을 

아래처럼 변경해야 합니다.

    <application
        ....
        android:resizeableActivity="true">

 

디바이스 설정을 변경하지 않고 폴더블 설정을 완료하고 삭제 후 재설치하면 되어 있기도 한데 정확한 플래그를 모르겠네요;

알고 계신분은 댓글로 알려주시면 감사하겠습니다.

 

펼쳤을때 화면 유지 

상태 ( 접거나 폈을때 둘다 ) 변경시 보여주고 있던 목록이 사라지는 문제가 있었습니다.

위 문제는 'configchanges' 설정이 빠져있기 때문입니다.

 

configchanges는 특정 설정들을 지정하면 액티비티가 재시작되지 않고 유지됩니다. 

화면을 좌우로 회전할때가 그 예중 하나입니다. 이처럼 폴더블에 상태 변화도 같습니다.

 

폴더블 상태가 변경되더라도 유지되길 원하는 액티비티에 아래 코드를 추가해주세요.

            android:configChanges="screenSize|smallestScreenSize|screenLayout"

위 설정만으로 눈에 띄는 큰 문제들은 해결되어 원활하게 앱을 이용할 수 있었습니다.

 

추가적으로

주의해야할 사항

뷰를 그리는 시점에 디바이스 넓이를 계산해서 직접 뷰의 넓이를 수정하는 경우 configChanges 상황에 취약합니다. 

ex ) 초기 그릴때 상태가 접어진 상태면 펼쳤을때 커버 디스플레이의 넓이만큼으로 뷰 고정 

 

카카오톡과 같은 화면 뷰 

특정 코드로 엑비티비내 다른 엑티비티를 띄운다고 생각했는데 검색 결과 그런 코드는 없었고

화면 사이즈가 변함에 따라 특정 사이즈 이상에서 2개의 fragment를 나열해서 보여주는 화면이라고 추측됩니다. 

폴더블 전용 jetpack windowmanager를 활용하여 '반 접혔을때' 등에대해서도 대응 가능하니 공식 문서를 참고해주세요! 

 

 

생각보다 간단하게 폴더블을 대응할 수 있었습니다. 

여러분들의 앱은 폴더블에서 안전한가요 ~ ? 

반응형