2013-09-28 95 views
1

由於某些原因,我必須獲取非活動擴展類中的屏幕尺寸。我試着用下面的方法:在非活動擴展類(Android)中獲取屏幕尺寸

DisplayMetrics metrics = this.getResources().getDisplayMetrics(); 
int w = metrics.widthPixels; 

所以我可以使用「w」作爲寬度尺寸的像素。但是,這種方法似乎只適用於擴展活動的類。任何解決方案

謝謝大家。

+0

你嘗試http://stackoverflow.com/a/1016941/1023092? – Joe

回答

0

爲了訪問Activity方法,而無需每次你需要它的時候通過context,它保持到currentActivity參考您的應用程序object.-

public class YourApplication extends Application { 
    public YourApplication() { 
     instance = this;   
    } 

    public static YourApplication getInstance() { 
     return instance; 
    } 

    public Activity getCurrentActivity() { 
     return currentActivity; 
    } 

    public void setCurrentActivity(Activity currentActivity) { 
     this.currentActivity = currentActivity; 
    } 
} 

在你AndroidManifest.xml

是非常有用的
<application 
    android:name=".YourApplication" 
    ... 
    > 
</application> 

而在你ActivitiesonResume method.-

@Override 
protected void onResume() { 
    super.onResume(); 

    YourApplication.getInstance().setCurrentActivity(this); 
} 

另外,我通常有一個ParentActivity被我的其餘活動延伸,將這些共同的邏輯分組。

1

你必須通過類的構造函數中的上下文來傳遞:

public class Something { 

    Context context; 

    public Something(Context context){ 
     this.context = context; 
    } 

    public int getDisplayWidth(){ 
     DisplayMetrics metrics = this.context.getResources().getDisplayMetrics(); 
     int w = metrics.widthPixels; 
     return w; 
    } 
}