관계, Networking 그리고 Programming

Status Bar와 Title Bar 높이 구하기

androbook 본캐 2012. 1. 29. 22:29
프로그램을 짜려고 잡고 있으니 역시 UX와 UI가 나와야 제대로 프로그램을 짜겠구나 라는 생각을 하게 된다. 요구사항 수집/분석이란 것이 그냥 글로만 쓸것이 아니라 UX가 완성이 되고 UI가 작성되어야 제대로 되는 것이구나 라고 생각하며.

혼자 처음부터 끝까지 작성하는 프로그램이라도 할 건 하자라는 생각으로 그림판을 열었다. 그런데, 내 폰이 구형 안드로이드이다 보니. action bar같은 것은 없고 위쪽으로는 indicator 영역과 title bar 영역이 보인다.

전체 화면 크기는 3.7 인치, 800*480 해상도인데 위의 저것들의 높이는 빼야하잖아? 하고 검색해보니 indicator 보다 status bar라고들 주로 부르는 듯. 여튼 역시 누군가 물어보고 답한 흔적이 보인다. 다음의 코드를 사용해 내 프로그램이 사용할 실제 영역을 확인하자.



Rect CheckR
ect= new Rect();

Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(CheckRect);
int StatusBarHeight= CheckRect.top;
int contentTop= window.findViewById(Window.ID_ANDROID_CONTENT).getTop();


확인하자면 StatusBarHeight는 말그대로 Status Bar의 높이를 알려주고 contentTop - StatusBarHeight 는 Title bar의 높이 되시겠다. 어차피 activity의 높이 계산을 위한 것이므로 그냥 800 - contentTop을 하면 UX를 위해 사용할 화면 높이가 계산된다.

참고로 내폰을 확인해 보니 3.7 인치 800*480 해상도라면 status bar 높이가 38, title bar의 높이도 38이다.

아, 문득 생각 났는데 저 코드를 onCreate함수에서 사용해봐야 소용 없다는 걸 알아두자. 화면에 컨텐츠가 한 번 그려져야 display될 rect의 top이 계산된다. 그러므로 화면에 버튼이든 뭐든 만들어서 click 리스너에서 저 코드로 계산하던가, 아니면 Custom View를 만들어서 Drawing 이후 계산을 하게끔 하던가. 나는 당근 프로그램 내부에 버튼 하나 만들어서 onClick에서 확인했음. 귀찮으니까요. =_-

구글 검색해 보니 status bar 높이는 다음과 같다고 누군가 적어 놓았다. 참고하자.

for a device with 240 X 320 screen size the status bar height is 20px,
for a device with 320 X 480 screen size the status bar height is 25px,
for a device with 480 x 800 the status bar height must be 38px,

펌 : http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android






생각하라!!!!















.
.
.




from. tumblr