我正在写一个控制库,我想得到当前设备的屏幕密度,然后用它来绘制一些东西。当我没有活动对象来获取windowManager时,如何获取屏幕密度?
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;
int height = metric.heightPixels;
float density = metric.density;
我猜您的方法在一个类中。因此,如果您有一个可访问的Context
对象,请使用上下文的getResources().getDisplayMetrics()
方法!
上下文在android中无处不在。如果您有一个视图,您可以通过在视图上调用getContext
来获取上下文。如果你有一个活动,那就更好了,因为活动是Context
。
也就是说,您需要一个Context
对象!
您的方法必须在类中。因此,您可以向类中添加Context
字段,也可以向构造函数中添加参数,并让客户端代码为您提供上下文:
private Context context;
public YourClassName (Context c) {
context = c;
}
这个东西已经在android中实现了很多次。例如CCD_ 7的构造函数和CCD_。
您只需要一个context
、application
或activity
:
DisplayMetrics dm = context.getResources().getDisplayMetrics();