이번에 우리 회사에서 아래와 같은 QA가 올라왔다.
우리 앱의 하단 네비게이션 바와 안드로이드 자체 하단 바의 겹침현상이 일어났다.
해당 오류는 우리는 하단 네비게이션을 그리기 전에 갤럭시 하단바의 높이를 구하고 그 위에 그리는 형식으로 되어 있다.
갤럭시 높이를 구하는 코드의 방식은 안드로이드 버젼에 따른 코드 방식을 사용하고 있는데 이는 다음과 같다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//갤럭시 하단바의 높이를 구하는 동작 방식
} else {
//예외처리
}
그런데 버젼에 따라 자체 하단바가 다 다르므로 한두번씩 이러한 위와 같은 오류를 발생시키는 것 같다는 의심을 하였다.
여기에 아래와 같은 방어코드를 대입했다. 방어 코드의 의미는 한번이라도 들어왔던 디바이스의 높이가 0이 아니라면 해당 디바이스의 하단바 높이값을 저장한다. 이후 높이값을 0을 리턴하는 순간이 온다면 저장했던 값을 던져준다.
if (returnPoint.y <= 0) {
returnPoint.y = BizPref.Device.getDEVICE_NAVIGATION_BAR_HEIGHT(context)
} else {
BizPref.Device.putDEVICE_NAVIGATION_BAR_HEIGHT(context, returnPoint.y)
}
위와 같은 코드 방식은 원리에서 바꾸지는 않았지만 이렇게 하면 적어도 내 생각에는 같은 방식의 오류를 던지지 않을것으로 보인다.
'Android > 기타' 카테고리의 다른 글
layout Inspector (0) | 2022.11.07 |
---|---|
FragmentMannager (0) | 2022.11.03 |
생명주기에 대해서 (0) | 2022.11.03 |
다양한 진입 방법에 대해 알아보자 (0) | 2022.10.28 |
Datastore에 대해 알아보자 (0) | 2022.10.23 |