当我没有activity-object来获取windowManager时,如何获得屏幕密度?

时间:2015-11-13 04:46:10

标签: android

我正在编写一个控件库,我想获得当前设备的屏幕密度,然后用它来绘制一些东西。当我没有activity-object来获取windowManager时,如何获得屏幕密度?

private let arrayPat = try! NSRegularExpression(pattern: "Array<", options: [])

extension Array {
  var numberOfDims: Int {
    let typeName = "\(self.dynamicType)"
    return arrayPat.numberOfMatchesInString(
        typeName, options: [], range: NSMakeRange(0, typeName.characters.count))
  }
}

2 个答案:

答案 0 :(得分:1)

我猜你的方法是在课堂上。因此,如果您可以访问getResources().getDisplayMetrics()对象,请使用上下文的getContext方法!

在Android中,上下文无处不在。如果您有视图,则可以通过在视图上调用Context来获取上下文。如果你有活动,那就更好了,因为活动 Context

这意味着,您需要一个Context对象!

你的方法必须在课堂上。因此,您可以在类中添加private Context context; public YourClassName (Context c) { context = c; } 字段,并且可以向构造函数添加参数,并让客户端代码为您提供上下文:

View

这个东西已经很多次在android中实现了。例如PreferenceManager.getDefaultPreferences的构造函数和{{1}}。

答案 1 :(得分:0)

您只需要contextapplicationactivity

DisplayMetrics dm = context.getResources().getDisplayMetrics();