从Android API Level 15开始,有一种方法 public Drawable getDrawableForDensity (int id, int density)
可以检索特定屏幕密度的可绘制对象.在API级别15之前有没有办法做到这一点?
所以我实际上认为可以按照 @adtennant 的建议使用 Android API 和源代码的逆向工程来解决这个问题。我开始编写解决方案,但在此过程中遇到了死胡同,因为所需的底层本机(非 Java)API 在更高版本的 Android 中不可用。
如果您可以将其限制为仅位图(如您的评论所暗示的那样),则可以按照建议使用 BitmapFactory 来执行此操作。BitmapFactory还有另一个方法:
此方法接受附加的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;
Run Code Online (Sandbox Code Playgroud)
如果加载的密度不匹配,这也会将其缩放到屏幕密度。
归档时间: |
|
查看次数: |
3588 次 |
最近记录: |