图像未出现在 HTC One M8 上
Posted
技术标签:
【中文标题】图像未出现在 HTC One M8 上【英文标题】:Image not appearing on HTC One M8 【发布时间】:2015-08-22 13:59:22 【问题描述】:我目前正在为我工作的公司开发一款新应用。 我们在多台设备上对此进行了测试,这是我前几天注意到的一件奇怪的事情,其他人也这样做了。
我的同事在他的 HTC one m8 上测试了该应用程序,我们在登录页面上有一张背景图片,但他没有显示。但它在 Nexus 7、三星 Galaxy Tab 4、摩托罗拉 G 和三星 S4 上确实如此。
这可能非常具体,但我想有些人之前一定已经在某些设备上注意到了这种行为并找出了为什么会发生这种情况?
图片保存在普通的drawable文件夹中,大小为1400px933px,为jpeg。
不知道有没有人知道。
ImageView 是相对布局的第一个子级,其宽度和高度都与父级匹配。所以它应该刚好合适,其他视图都在这个之上。
【问题讨论】:
您是否尝试将图像放在不同的可绘制文件夹中以支持不同的屏幕密度? 不,我没有,我可能稍后会这样做,但它应该仍然有效吗? 【参考方案1】:我相信这个问题也与 android 如何缩放图像有关。尝试将图像放入drawable-nodpi
资源文件夹。
drawable
文件夹与drawable-mdpi
相同。在 HTC One M8 上,mdpi
的图像被放大了 3 倍。所以你的1400x933px
图像变成了4200x2799px
。 OpenGL 允许的最大尺寸为4096x4096
。
【讨论】:
它目前在“drawable”文件夹中,我可以尝试将它放入xhdpi,然后发布结果。 我刚刚用我的 One M8 进行了测试,图像在nodpi
、xhpdi
和 hdpi
文件夹中正确显示,但在 mdpi
文件夹中显示不正确。
你是否也检查了没有后缀?所以“可绘制”而不是drawable-nodpi
drawable
不起作用。 drawable-nodpi
等除mdpi
及更低版本外均正常工作。
在我的情况下,在 HTC One 8 中从相机捕捉时它不起作用。如何解决这个问题?【参考方案2】:
我在使用三星 Galaxy Note 3 时遇到了类似的问题。这是唯一无法加载大位图图像的设备。经过相当长的搜索,我终于发现某些手机默认使用小堆大小的应用程序。这是因为内存优化和防止内存泄漏问题。所以基本上你可以做以下事情来解决这个问题,
在活动清单中的元素上使用android:largeHeap="true"
。这将使您的应用程序具有较大的堆大小。
使用图像加载库,例如 Android-Universal-Image-Loader
使用分辨率较低的优化图像。
【讨论】:
是的,你会发现调试器会告诉你W/OpenGLRenderer﹕ Bitmap too large to be uploaded into a texture
没错! @科林·吉莱斯皮。这很奇怪,但在某些设备中会发生。
好的,我知道设备问题太大了。我会检查是否是这样,但您希望其中一款高端设备能够使用“大”位图。虽然它甚至都不大。但我会检查
我会,但如果可行的话,我更喜欢科林的方法。我过去使用过的 LargeHeap 但它只是让堆增长成为可能,而不是我真正想要的:) 当你实现它时,请检查你的应用程序的内存使用情况,它可能有泄漏并增长到疯狂的内存使用。
我没有尝试所有这些,因为图像质量已经很低了,Colin的问题解决了它,我应该使用nodpi文件夹而不是没有后缀。【参考方案3】:
这可能会得到回答,但因为我的搜索将我带到了这里,并且可能会对其他人。我的 xml 以前看起来像这样。惊讶地看到它生成了 app:srcCompat 因为我从来没有听说过。我将代码保持原样并复制“@drawable/your_image”作为我添加的新属性的值 android:src。
<ImageView
android:layout_
android:layout_
app:srcCompat="@drawable/salwa_small"
android:id="@+id/img_my_profile_picture"/>
之后:
<ImageView
android:layout_
android:layout_
app:srcCompat="@drawable/salwa_small"
android:src="@drawable/salwa_small"
android:id="@+id/img_my_profile_picture"/>
我之前只能在 android studio 设计器中看到图片,但在它同时出现之后。
【讨论】:
以上是关于图像未出现在 HTC One M8 上的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 adb shell 打开数据库时,为啥在根植的 Nexus One 上出现“sqlite3:未找到”错误?