使用以下代码:
public class Panel extends SurfaceView {
// ......
// in one of the methods I want to call
Display display = getWindowManager().getDefaultDisplay();
// ......
}
问题在于getWindowManager()
方法,我想这个方法只能在activity中调用,但我不在我的自定义方法中的名为panel的活动中。如何在自定义组件中获取DisplayMetrics
?
答案 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
}
}