因爲我的很多活動都需要用下面的代碼來檢查屏幕尺寸:如何從我的服務類獲取Display對象?
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
我決定從每個活動類此代碼移到服務類,這樣的代碼可以在一個地方被定義並由每個活動類調用。
所以,我做我的服務類象下面這樣:
public class MyService {
private Display display;
public int screenWidth, screenHeight;
public MyService(){
display = getWindowManager().getDefaultDisplay(); //Error here
screenWidth = display.getWidth();
screenHeight = display.getHeight();
}
public int getScreenWidth(){
return this.screenWidth;
}
}
因爲我的服務類沒有擴展Activity
,我不能直接使用getWindowManager()
。我想知道如何擺脫這個問題在我的服務類中有沒有必要擴展Activity類的Display
實例?
這就是我想我的活動可以訪問屏幕寬度類似以下內容:
public class MyActivity extends Activity{
MyService service;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service= new MyService();
int sWidth = service.getScreenWidth();
}
}
@ getekha,如果使用像素寬度和高度不是一個好的設計,我想知道什麼是更好的方法?例如,如果我想定義我的佈局組件以佔用屏幕高度的1/3。 – Mellon
閱讀http://developer.android.com/guide/practices/screens_support.html和http://developer.android.com/guide/topics/ui/layout-objects.html。如果您製作遊戲或其他需要更好地控制各個像素以創建所需效果的遊戲,則使用屏幕尺寸可能是正確的方法,但通常不會 – getekha