我正在编写一个控件库,我想获得当前设备的屏幕密度,然后用它来绘制一些东西。当我没有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))
}
}
答案 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)
您只需要context
,application
或activity
:
DisplayMetrics dm = context.getResources().getDisplayMetrics();