Man*_*ish 9 resources android android-widget android-appwidget
我需要在Android AppWidget中确定运行时的屏幕密度.我已经设置了一个HDPI仿真器设备(avd).如果设置了常规可执行项目,并将此代码插入onCreate方法:
DisplayMetrics dm = getResources().getDisplayMetrics();
Log.d("MyTag", "screen density " + dm.densityDpi);
Run Code Online (Sandbox Code Playgroud)
这按预期输出"屏幕密度240".
但是,如果我设置了一个AppWidget项目,并将此代码插入onUpdate方法:
DisplayMetrics dm = context.getResources().getDisplayMetrics();
Log.d("MyTag", "screen density " + dm.densityDpi);
Run Code Online (Sandbox Code Playgroud)
这输出"屏幕密度160".我注意到,连接调试器,这里的Resources对象的mDefaultDisplay成员在AppWidget案例中为null.
类似地,如果我在运行时使用从AppWidget中的context.getResources()获得的Resources对象获取资源,它将根据屏幕密度返回错误的资源.例如,我有一个60x60px可绘制的mdpi,以及一个80x80可绘制的hdpi.如果我使用context.getResources().getDrawable(...)获取此Drawable对象,则返回60x60版本.
有没有办法在运行时从AppWidget的上下文正确处理资源?
谢谢!
这感觉就像一个错误。如果您可以创建一个示例项目来演示该错误,请在Android 问题跟踪器上发布问题。如果您想到了,请在此处添加评论以指出该问题。