2012-02-02 29 views
19

Nếu tôi đặt điều này trong một số lớp hoạt động nó hoạt động hoàn hảo nhưng, khi tôi đặt nó trong lớp ứng dụng của tôi phương pháp getWindowManager() không thể được tìm thấy. Có cách nào để có được WindowManager trong lớp ứng dụng?Làm thế nào để có được số liệu hiển thị màn hình trong lớp ứng dụng

lớp Ứng dụng của tôi được định nghĩa như thế này:

public class myApp extends Application { 

và ở trên tạo ra phương pháp tôi có điều này:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width = dm.widthPixels; 

Trả lời

54

Ở đây, Context.getResource()

DisplayMetrics dm = getResources().getDisplayMetrics(); 
int densityDpi = dm.densityDpi;
1

Hãy thử điều này:

Display display = getWindowManager().getDefaultDisplay(); 
Log.e("", "" + display.getHeight() + " " + display.getWidth()); 
+3

Bạn có thể t 'có được getWindowManager trong lớp Application. –

+1

bên của riêng bạn hoạt động đúng cách –

+0

@NiteshKhosla bạn có thể chỉ ra bất kỳ tài liệu nào cho chúng tôi thấy rằng lớp Ứng dụng có chứa phương thức getWindowManager() không? Tôi không thể tìm thấy ở đây: http://developer.android.com/reference/android/app/Application.html –

10

Bạn cũng có thể thử điều này:

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
final DisplayMetrics displayMetrics = new DisplayMetrics(); 
wm.getDefaultDisplay().getMetrics(displayMetrics); 
int height = displayMetrics.heightPixels; 
int width = displayMetrics.widthPixels; 
0
final DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 

int width = dm.widthPixels; 
int height = dm.heightPixels; 

getWindow().setLayout((int) (width * .8), (int) (height * .5)); 
Các vấn đề liên quan