自Android API Level 15起,有方法
public Drawable getDrawableForDensity (int id, int density)
可用于检索特定屏幕密度的可绘制对象。在API Level 15之前是否有任何方法可以实现这一点?public Drawable getDrawableForDensity (int id, int density)
可用于检索特定屏幕密度的可绘制对象。在API Level 15之前是否有任何方法可以实现这一点?因此,根据@adtennant的建议,我认为可以使用Android API和源代码的反向工程来解决它。我开始编写解决方案,但在这个过程中遇到了瓶颈,因为后续版本的Android中缺少必要的底层本地(非Java)API。
如果您只考虑位图,就像您的评论所暗示的那样,那么可以使用建议的BitmapFactory来完成这项任务。BitmapFactory还有另一种方法:
{{link1:decodeResource(Resources res, int id, BitmapFactory.Options opts)}}
此方法接受附加的BitmapFactory.Options,这将允许您指定要加载的密度。自API级别1以来,它就存在了。具体而言,我相信您可以使用:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDensity = DisplayMetrics.DENSITY_MEDIUM; // whichever you want to load
options.inTargetDensity = getResources().getDisplayMetrics().densityDpi;
options.inScaled = true;