본문 바로가기

프로그래밍/Android

위젯 1:1 크기 계산

위젯 1:1 비율

- 위젯 사이즈는 1:1 비율로 만들기 위해, 위젯 크기를 구해서 상하단의 padding 값을 빼줬다. padding =  (height - width) / 2 
- 홈 화면 세로모드, 가로모드에 대응하기 위해 세로모드일 때의 padding 과 가로모드일 때의 padding 을 각각 구했고, 가로모드 일때도 1:1 비율로 유지되도록 구현했다. (paddingVertical, paddingHorizontal)
remoteViews.setViewPadding(R.id.layout_widget, paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical)

 

찌그러진 위젯

- 근데 자고일어나면 위젯이 찌그러져있는 버그를 발견함
- padding 값을 제대로 계산하지 못해서 사이즈가 찌그러진 것이라고 판단함
- 처음엔 백그라운드 또는 sleep 모드여서 디스플레이 위젯 크기를 제대로 불러오지 못한다고 생각함
- 근데, paddingVertical 에 0 값을 넣었는데도 문제화면과 동일하게 나타나지 않음

 

재현되지 않음ㅠ

- 그래서 paddingHorizontal 에 임의로 -100 값을 설정함. 문제화면과 비슷하게 나타났지만 똑같지 않음
- 현재 디바이스에서 생성되는 paddingVertical 값은 125 였음 paddingHorizontal 에 -125 값을 설정했더니, 문제화면과 동일하게 재현됨
- 디바이스가 세로모드일때 padding 을 구한다면, (height - width ) / 2 로 계산하고, 가로모드일 때는 (width - height) / 2 로 계산함
- 잘 때, 가로모드로 영상을 보는데, 그때 Service 가 호출되어서 위젯 사이즈를 계산하면, 이 버그가 나타난다고 추정함

- padding 구하는 식을 세로모드이거나 가로모드일 때가 아닌 height 와 width 의 크기로 수정함