標籤雲

搜尋此網誌

2012/11/13

取得螢幕實際寬高的方法

基本上這方法就寫在官方的 doc 裡
網路搜尋的話也很容易找到
不過還是在此記錄一下
DisplayMetrics displaymetrics = new DisplayMetrics();
//使用 Activity 的 getWindowManager()獲得 WindowManager
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

主要就是在 Activity 裡利用 getWindowManager() 先取得系統唯一的 WindowManager
然後取得一個 DisplayMetrics 物件
這物件主要是存放解析度相關的屬性
包含 densityDpi, widthPixels, heightPixels ... 等

所以利用 DisplayMetrics 很簡單就得到螢幕實際像素了

2012 Dec 24 更新:
WindowManager 除了透過 Activity 的 getWindowManager()獲得之外
還可以透過 Context 的 getSystemService(Context.WINDOW_SERVICE) 取得
所以 code 也可以這樣改
public static int[] getDisplayPixels(Context context){
 DisplayMetrics displaymetrics = new DisplayMetrics();
 WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
 windowManager.getDefaultDisplay().getMetrics(displaymetrics);
 int width = displaymetrics.widthPixels;
 int height = displaymetrics.heightPixels;
 return new int[]{width, height};
}

沒有留言: