gpt4 book ai didi

android - 图像显示在设备上但不显示在模拟器上?安卓

转载 作者:行者123 更新时间:2023-11-30 03:58:01 25 4
gpt4 key购买 nike

在我的应用程序的一部分中,我使用以下方法检查屏幕密度:

float sdpi = ApplicationConstants.ref_currentActivity.getResources().getDisplayMetrics().density;
if(sdpi == 0.75)
{
ApplicationConstants.screenSize = "small";
}
else if(sdpi == 1.0)
{
ApplicationConstants.screenSize = "medium";
}
else if(sdpi == 1.5)
{
//Message.inform("Setting Screen Size", "sdpi is:" + sdpi + " so screen size is large");
ApplicationConstants.screenSize = "large";
}
else if(sdpi == 2.0)
{
ApplicationConstants.screenSize = "xlarge";
}

然后在另一部分中,我只是有一个方法可以根据屏幕大小加载正确的图像位图:

   if(ApplicationConstants.screenSize.equals("small"))
{
imageName = imageName + "s";
}
else if(ApplicationConstants.screenSize.equals("medium"))
{
imageName = imageName + "m";
}
else if (ApplicationConstants.screenSize.equals("large"))
{
imageName = imageName + "l";
//Message.inform("ImageName should have an l at the end", imageName );
}
else imageName = imageName + "x";

所以基本上 - 如果我调用 findImageByName("SomeImage"),然后图像名称将根据屏幕密度更改为 SomeImages(small)、SomeImagem(medium)、SomeImagel(large)、SomeImagex(xlarge) -然后我使用 imageName 从我从 jar 文件中提取的图像创建一个可绘制对象。

我发现这在我的 mdpi 屏幕设备上运行良好 - 但在模拟器上我没有图像显示在它们应该显示的位置。

我想也许我只是在某个地方犯了一个愚蠢的错误,所以我将 ApplicationConstants.screenSize 更改为“中等”,即使我的 sdpi 是 1.5,但在模拟器运行时仍然没有加载图像。

有人遇到过这个问题吗?

注意:我以这种方式加载图像的原因是因为它是一个 modularImageLoader 类,可以从 jar 文件加载图像。 jar 文件包含我在运行时使用 DexClassLoader 动态加载的 .class 所需的图像。如果有人对动态模块加载过程有任何疑问 - 请随时提问,我会解释为什么我以这种方式加载图像。

感谢任何帮助 :) StackOverflowers 的同胞。

注意:我目前无法访问 hdpi-real life android 设备。否则我会在那里测试它是否有效。

编辑:

我已经设法让它在模拟器上运行——但这没有使用状态……我最终需要在按钮上使用它来确保它们看起来像是被点击了。

这是有效的:

b[i].setBackgroundDrawable(ApplicationConstants.moduleImageLoader.findImageByName(drawable_normal));

这是行不通的:但应该!

states.addState(new int[] {}, ApplicationConstants.moduleImageLoader.findImageByName(drawable_normal));b[i].setBackgroundDrawable(states);

b 是一个按钮数组。ApplicationConstants.modularImageLoader 为当前模块获取正确的 imageLoader。findImageByName 根据屏幕密度采用“imageName”附加 s、m、l、x,并返回与该名称匹配的可绘制对象(即我模块的 jar 中具有该名称的图像文件)。ModularImage 加载器与我的模块加载器协同工作 - 确保为其相应模块加载正确的 imageLoader。

知道为什么状态在这种情况下不起作用吗?感谢任何帮助......我是否错误地使用了状态?

最佳答案

除非这些是拼写错误,否则我认为您最有可能的问题是假设密度对应于屏幕尺寸。实际上,它很可能与您编码的内容相反(例如,密度越高,屏幕尺寸越小——通常),因为屏幕越大,像素分布越远,导致较低的密度。当然,可以增加屏幕分辨率来补偿并提高密度,但在大多数情况下,与密度较低的屏幕相比,密度较高的屏幕更可能是较小的屏幕。

关于android - 图像显示在设备上但不显示在模拟器上?安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com