2017-07-17 34 views
-1

下面的代碼worcks罰款才能拿回屏幕尺寸試圖在onDraw有讓屏幕大小在MainActivity類基法

DisplayMetrics displayMetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
int height = displayMetrics.heightPixels; 
int width = displayMetrics.widthPixels; 

我希望得到的寬度和高度,我onDraw方法,因此,如果用戶旋轉設備該方法將看到新的值

所以我複製到我的onDraw方法的代碼。

我得到一個錯誤sayng getWindowManager()是不確定的,即時通訊假設這becouse中的onDraw基法是在不同勢類SI它不具有基法

有沒有辦法讓屏幕大小的的onDraw方法?

但我得到一個錯誤說

+1

的可能的複製[獲取屏幕寬度和高度(https://stackoverflow.com/questions/4743116/get-screen-width-and-height) – petey

+0

什麼類的'的onDraw()'你把這成?這是有區別的。一般來說,你應該重寫'onMeasure()'如果你正在做一個自定義視圖? –

+0

哪裏的onDraw()方法屬於?片段還是活動? – Jay

回答

0

正如你已經猜到,getWindowManager()Activity,不View的方法,所以你不能從你的onDraw()實現調用它。

但是,還有其他方法可以獲得WindowManager實例。下面的代碼將起作用,但通常不建議在onDraw()內分配對象。

@Override 
public void onDraw(Canvas canvas) { 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); 
    manager.getDefaultDisplay().getMetrics(displayMetrics); 
    int height = displayMetrics.heightPixels; 
    int width = displayMetrics.widthPixels; 
}