获取自定义类中的显示指标值

时间:2011-11-23 15:17:06

标签: android

使用以下代码:

public class Panel extends SurfaceView  {
    // ......
    // in one of the methods I want to call  
    Display display = getWindowManager().getDefaultDisplay();
    // ......
}

问题在于getWindowManager()方法,我想这个方法只能在activity中调用,但我不在我的自定义方法中的名为panel的活动中。如何在自定义组件中获取DisplayMetrics

2 个答案:

答案 0 :(得分:14)

您可以通过以下方法之一在View中获取DisplayMetrics:

DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) getContext()).getWindowManager()
    .getDefaultDisplay().getMetrics(displayMetrics);

DisplayMetrics displayMetrics = new DisplayMetrics();
((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE))
    .getDefaultDisplay().getMetrics(displayMetrics);

答案 1 :(得分:0)

要获取显示指标,您必须执行此操作。

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

然后你可以这样做。

Panel p = (Panel) findViewById(R.id.panel);
p.setDisplayMetrics(displayMetrics);

可以在自定义视图中访问它。

public class Panel extends SurfaceView {
    private DisplayMetrics mDisplayMetrics;

    public void setDisplayMetrics(DisplayMetrics displayMetrics) {
        mDisplayMetrics = displayMetrics;
    }

    void myFunction() {
        // do something with display metrics
    }
}