안드로이드/Android statusbar, titlebar 높이 구하기
안드로이드 statusbar와 titlebar를 기본적으로 사용하게 되는데요, 그렇다면 statusbar와 titlebar의 높이는 몇으로 설정되어 있는 것 일까요? 기본적으로 Density에 따라 높이가 달라지는데요,
LOW Density= 19px
MEDIUM Density= 25px
HIGH Density= 38px
값으로 설정 됩니다. 자 그럼 코드상에서 statusbar 와 titlebar의 높이를 구하는 방법을 알아 보겠습니다.
package arabiannight.tistory.com.status; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; public class TestStatusBarHeightActivity extends Activity { private static final int LOW_DPI_STATUS_BAR_HEIGHT = 19; private static final int MEDIUM_DPI_STATUS_BAR_HEIGHT = 25; private static final int HIGH_DPI_STATUS_BAR_HEIGHT = 38; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getStatusBarSizeOnCreate(); LinearLayout layout = new LinearLayout(this); layout.post(new Runnable() { @Override public void run() { getStatusBarSize(); } }); } // StatusBar Size 구하는 메서드 ( onCreate에서 실행 불가능 ) private void getStatusBarSize(){ Rect rectgle= new Rect(); Window window= getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectgle); int StatusBarHeight= rectgle.top; int contentViewTop= window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int TitleBarHeight= contentViewTop - StatusBarHeight; Log.i("StatusBarTest" , "StatusBar Height= " + StatusBarHeight + " TitleBar Height = " + TitleBarHeight); } // onCreate()에서 StatusBar 구하는 메서드 ( Density 이용 ) private void getStatusBarSizeOnCreate(){ DisplayMetrics displayMetrics = new DisplayMetrics(); ((WindowManager) getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay().getMetrics(displayMetrics); int statusBarHeight; switch (displayMetrics.densityDpi) { case DisplayMetrics.DENSITY_HIGH: statusBarHeight = HIGH_DPI_STATUS_BAR_HEIGHT; break; case DisplayMetrics.DENSITY_MEDIUM: statusBarHeight = MEDIUM_DPI_STATUS_BAR_HEIGHT; break; case DisplayMetrics.DENSITY_LOW: statusBarHeight = LOW_DPI_STATUS_BAR_HEIGHT; break; default: statusBarHeight = MEDIUM_DPI_STATUS_BAR_HEIGHT; } Log.i("StatusBarTest" , "onCreate StatusBar Height= " + statusBarHeight); } }
파일첨부 :
출처 : http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android
'Android > 일반' 카테고리의 다른 글
안드로이드/Android 언어 설정 하기! (6) | 2012.04.20 |
---|---|
안드로이드/Android 노티피케이션(Notification) 사용법 (9) | 2012.04.18 |
안드로이드/Android String "null" Check 메서드 (0) | 2012.04.06 |
안드로이드/Android 단말 화면꺼짐 방지 (0) | 2012.04.05 |
안드로이드/Android getResources() 함수 API 정리 (0) | 2012.03.12 |