미니 안드 13 예측성 뒤로가기
- idsr
- 조회 수 2634
- 2022.06.19. 03:44
https://developer.android.com/about/versions/13/features/predictive-back-gesture
안드 13에서 큰 변화중 하난데 뒤로가기를 실행시 좀 더 예측가능하도록 변화를 준 부분입니다.
사실 이 기능이 뭐를 얘기하는지 이해가 안되긴 하는데 크게
- 사용자가 뒤로가기로 예상하는 액티비티를 시스템이 예측?
- 뒤로가기로 돌아갈 상태를 시각적으로 보여줌?
뭔가 두가지 컨셉을 묶어서 부르는거같은데 1번은 깊게 안봐서 정확히 모르겠고 2는 이제 뒤로가기 트리거만 해주던 방식에서 뒤로가기 제스쳐 시 손가락 따라서 애니메이션을 보여주는 부분이 추가된 것 같습니다.
현재 앱 내에서 기능 지원 플래그를 설정해야 지원하며 14부터는 아예 대체될 예정이라고 합니다.
(기존의 onBackPressed를 onBackInvoked 로 대체)
13 베타 3 기준으로 이제 돌려볼 수 있으며 애니메이션은 개발자 설정에서 켜야합니다
Predictive back animations 입니다
킨 후 지원하는 앱에서 다음과 같이 홈으로 돌아가게 됩니다
그리고 https://codelabs.developers.google.com/handling-gesture-back-navigation#1
여기서 샘플 코드 예시의 경우 문항 답변 액티비티에서 기존에는 아예 액티비티가 전으로 가버렸다면 이제는 한 문항만 뒤로 가는 것이 가능해졌다고 합니다.
말보다는 예시로 보면
기존:
반영 후
뭔가 문항 돌아갈때 애니메이션이 있을 줄 알았는데 없더라고요
![추천봇](https://meeco.kr/files/member_extra_info/profile_image/595/865/023/23865595.png?20210603211236)
![MrGom™](https://meeco.kr/files/member_extra_info/profile_image/733/680/025/25680733.png?20240417004224)
![숨겨진오징어](https://meeco.kr/files/member_extra_info/profile_image/834/556/029/29556834.png?20201004191854)
![불심](https://meeco.kr/files/member_extra_info/profile_image/789/048/035/35048789.png?20220402002055)
개발 트렌드 주제로 글 올려주셔서 감사합니다.
관련 예시 코드를 더 봤는데요. 이미 onBackPressedCallback을 이용해 back 처리를 관리하고 있었다면, 라이브러리 업데이트후 조금의 수정만으로도 혜택을 충분히 볼 것 같습니다. 이번에는 여기에 predictive한 기능을 위해 OS레벨에서 일부 기능추가가 된 것으로 이해가 되네요. codelab에 있는 내용은 사실 기존하고 바뀐점은 없고 마이그레이션 가이드 정도로 보시면 됩니다.
onBackPressed나 KeyEvent.KEYCODE_BACK 같은 레거시를 쓰는쪽이라면 가급적 업데이트 하는게 맞는것 같고요.
![불심](https://meeco.kr/files/member_extra_info/profile_image/789/048/035/35048789.png?20220402002055)
네. 결론은 그렇습니다.
프로젝트에서 androidx 라이브러리 패키지를 이미 쓰고, 이것으로 backpress 관리를 하고 있다면, 이를 업데이트 하는것과 manifest 수정으로 대응할 수 있고요.
onBackInvoked는 api level 33 플랫폼 SDK에 새로 추가되는 콜백입니다. 구버전엔 없던 녀석이라 이걸 직접 쓰기엔 부담되므로 보통은 androidx로 마이그레이션 처리하는게 더 낫습니다.
요약하자면 결국은, OS레벨에서 predictive하게 처리할 수 있는 onBackInvoked를 직접 호출하거나 이걸 내부 구현에서 분기할 수 있는 androidx를 쓰면 된다는 것인데요.
아마 기존 구현을 버린건 여러 이유가 있겠지만 레거시의 backpress 처리가 파편화 되어있고 콜백 한군데에서 구현 내용이 전부 드러나는 구조여서 이를 정리하고 기존걸 도태시키려는 의도가 아닐까 추측합니다.
너무 좋네요.