반응형
안녕하세요.
안드로이드 UI/UX 디자인을 할 때 하단바 위에 뷰를 위치하게 하고 싶을 때가 있습니다.
하지만 하단바 처리가 여간 까다로운 것이 아니죠.
기종에 따라 소프트웨어 하단바와 하드웨어 하단바로 나뉘기까지 하니까요.
오늘은 소프트웨어 하단바를 가지고 있다면 그 높이를, 없다면 0을 return하는 함수를 알려드리려고 합니다.
public static boolean isUseBottomNavigation(Context context) {
int id = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
boolean useSoftNavigation = context.getResources().getBoolean(id);
return useSoftNavigation;
}
public static int getBottomNavigationHeight(Context contect) {
int bottomNavigation = 0;
int screenSizeType = (contect.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK);
if(screenSizeType != Configuration.SCREENLAYOUT_SIZE_XLARGE) { //태블릿 예외처리
int resourceId = contect.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
bottomNavigation = contect.getResources().getDimensionPixelSize(resourceId);
}
}
if (!isUseBottomNavigation(contect))
bottomNavigation = 0;
return bottomNavigation;
}
원하는 곳에서 해당 함수에 Context를 인자로 넘기면 하단바의 높이를 return 합니다.
참고로 애뮬레이터에서는 제대로 동작을 하지 않습니다.
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형