사진과 같은 화면을 구현해야 하는 일이 생겨 작업을 진행하다가
Android의 다이얼로그를 열었을 경우 기본 dim 투명도와 시안의 투명도가 다르다는 것을 발견하였다.
시안이 배경이 더 어둡기 때문에(alpha 값이 높음) 어떻게 하면 더 어둡게 설정할 수 있을지 검색을 해보았고 답을 찾을 수 있었다.(글 맨 마지막 레퍼런스 확인)
기본 다이얼로그 테마 적용시 Dim 색상(살짝 밝다는 것을 확인할 수 있다)
styles
<style name="OnBoardingDialog" parent="@style/Theme.MaterialComponents.Dialog">
<item name="android:background">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.72</item>
</style>
backgroudDimEnabled 는 default 가 true 이므로 생략해도 된다.
true 로 설정될 경우 system 에 지정된 color 를 통해 바깥 영역을 어둡게 처리한다.
DimAmount 를 통해 DimAlpha 값을 조절할 수 있으며, 1에 가까울 수록 어둡다
Dim 처리를 아예 하지 않고 싶다면 backgroundDimEnabled 속성을 false 로 설정하거나
context?.let {
dialog?.let { dialog ->
dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
dialog 내에서 해당 flag 코드를 적용해주면 된다.
styles 파일 내에서 custom style 을 만들었다면
override fun getTheme(): Int = R.style.OnBoardingDialog
dialog 내에서 getTheme() 함수를 override 하여 속성을 적용해줘야 화면에 반영이 된다.
빼먹고 적용이 안된다는 질문 글들을 많이 본 것 같다.
참고 문서)