每次程序启动时,可绘制对象的显示分辨率密度减半

发布于 2024-10-30 07:56:30 字数 1730 浏览 0 评论 0 原文

我有一个 Android 应用程序,它使用自己的资源文件夹中的可绘制对象以及通过共享用户 ID 链接的包的资源文件夹中的可绘制对象。

每次运行应用程序时,我都面临着只有自己的资源**可绘制对象的像素密度下降(导致插值伪影),而那些链接的***则显得正常。

执行该应用程序大约第 10 次时,它崩溃了*。 然后第一次加载会以原始密度显示所有图像。

该应用程序基于 SDK 版本 1.6,没有特定密度相关的资源,这意味着严格为 320 x 480px 设计。 该问题既不会出现在具有上述显示尺寸匹配的设备上,也不会出现在具有匹配和更大显示尺寸的模拟器上。在最后一种情况下,图像会正确缩放以适应。

我不知道从哪里(在代码中)开始寻找该错误的原因。

预先感谢您的任何提示!


编辑:
我还应该提到,在重新加载应用程序时,几个对话框(例如 ProgressDialog)的绘制尺寸是以前的一半。

* 应用程序崩溃时的日志输出:

ERROR/AndroidRuntime(23632): FATAL EXCEPTION: main ERROR/AndroidRuntime(23632): java.lang.RuntimeException: 无法启动 Activity ComponentInfo{com.myapp/com.myapp.Paketliste}: android.view.InflateException: 二进制 XML 文件行 #20: 膨胀类 时出错; 错误/AndroidRuntime(23632):由以下原因引起:android.view.InflateException:二进制 XML 文件行 #20:膨胀类 时出错; 错误/AndroidRuntime(23632):由以下原因引起:java.lang.reflect.InitationTargetException 错误/AndroidRuntime(23632):由以下原因引起:android.content.res.Resources$NotFoundException:来自可绘制资源 ID #0x7f020016 的文件 res/drawable/buttons.png 错误/AndroidRuntime(23632):引起:java.lang.IllegalArgumentException:宽度和高度必须> 0 WARN/ActivityManager(2461): 强制完成活动 com.myapp/.Paketliste


* * 这些行加载的图像显示如上所述:

ImageView imageView_IconOfAnotherPackage = (ImageView) row
  .findViewById(R.id.paketliste_installed);

imageView_IconOfAnotherPackage
  .setImageResource(R.drawable.default_icon);

* * * 加载显示的图像没有问题:

imageView_IconOfAnotherPackage
  .setImageDrawable(this
    .getPackageManager()
    .getResourcesForApplication('com.myotherapp')
    .getDrawable(0x7f020001)
  );

I've got an Android app that uses both drawables from its own resources folder and from the resources folder of a package linked via shared user id.

I'm facing a decrease of the drawables' pixel density (resulting in interpolation artefacts) of only own resources** each time the app is run, while those linked*** appear normal.

Executing the app about the 10th time, it crashes*.
Then loading for the 1st time displays all images in their original density.

The app is based on SDK version 1.6 and no specific density dependent resources, meaning strictly designed for 320 x 480px.
The issue does appear neither on a device with a display size matching as above, nor in an emulator with both matching and larger display size. In the last case the images are correctly scaled to fit.

I don't know where (in the code) to start looking for the reasons of that bug.

Thanks in advance for any hints!


EDIT:
I should also mention that several Dialogs (e.g. ProgressDialog) are drawn in half the size as before when reloading the application.

* Log output when the app crashes:

ERROR/AndroidRuntime(23632): FATAL EXCEPTION: main
ERROR/AndroidRuntime(23632): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.Paketliste}: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
ERROR/AndroidRuntime(23632): Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
ERROR/AndroidRuntime(23632): Caused by: java.lang.reflect.InvocationTargetException
ERROR/AndroidRuntime(23632): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/buttons.png from drawable resource ID #0x7f020016
ERROR/AndroidRuntime(23632): Caused by: java.lang.IllegalArgumentException: width and height must be > 0
WARN/ActivityManager(2461): Force finishing activity com.myapp/.Paketliste


* * The image loaded by these lines appears as described above:

ImageView imageView_IconOfAnotherPackage = (ImageView) row
  .findViewById(R.id.paketliste_installed);

imageView_IconOfAnotherPackage
  .setImageResource(R.drawable.default_icon);

* * * Loading an image which appears WITHOUT AN ISSUE:

imageView_IconOfAnotherPackage
  .setImageDrawable(this
    .getPackageManager()
    .getResourcesForApplication('com.myotherapp')
    .getDrawable(0x7f020001)
  );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人如初 2024-11-06 07:56:30

我发现一个帖子,其中一个人可能遇到了同样的问题(并找到了解决方案):

http://adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx

(通过这个答案:在 Android 偏好设置中设置应用程序语言

I found a post where a guy presumably was having the same problem (and found a solution) here:

http://adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx

(via this answer: Set-up the application Language in Android Preferences)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文