【问题标题】:Custom ImageView getting resized automatically on Nexus 7自定义 ImageView 在 Nexus 7 上自动调整大小
【发布时间】:2013-03-04 11:07:46
【问题描述】:

我有一个覆盖整个屏幕的自定义 ImageView。图片来源于drawable文件夹之一,drawable-hdpi、drawable-xhdpi、drawable-sw600dp等,每个密度桶都有单独的图片。

到目前为止,该应用程序在 xhdpi 和 hdpi 设备上运行良好,当我在 Nexus 7 上测试时出现问题。存储在 sw600dp 文件夹中的图像大小为 1600x1600,应该足以直接在屏幕上绘制(没有缩放),但是当我运行应用程序时,屏幕变成完全空白,我收到以下警告:

03-04 16:25:46.338: W/OpenGLRenderer(25457): 位图太大而不能 上传到纹理中 (2130x2130, max=2048x2048)

由于某种原因,1600x1600 位图被缩放到 2130x2130,尽管我没有在任何地方手动缩放它(没有应用矩阵后缩放或 scaleX/scaleY)

对为什么会发生这种情况有任何想法吗?请提供解决方案并解释为什么会发生这种情况。

【问题讨论】:

    标签: android android-imageview


    【解决方案1】:

    由于 Nexus 7 是 tvdpi,它会将每个图像缩放到原始值的 1.33。所以 1600 变成 (1600*1.33)= ~2130。它不会从 sw600dp 文件夹中显示它。

    更多信息:-http://developer.android.com/guide/practices/screens_support.html

    您可以使用与其他 7 英寸平板电脑相同的图像(即分辨率 1024*600)。

    【讨论】:

    • 感谢 Kunal,这是一个很棒的答案,我确实将图像放在 drawable-tvdpi 目录中并且效果很好。非常感谢。课程:drawable-sw600dp 图像在 nexus 7 上显示时会缩放,而 drawable-tvdpi 不会。
    【解决方案2】:

    我想分享一些有关您遇到的错误的信息..

    Romain Guy (Android框架工程师)

    使用硬件加速时,文件大小是有限制的 质地。渲染位图时,必须将其上传到 OpenGL 先说质感。您的位图恰好大于最大值 Xoom (2048x2048) 上的纹理大小。您需要使用较小的位图或 把它分成几个位图。

    其他 SO 链接可能对您有所帮助:click here1click here2

    Git:click here

    更新:此答案仅说明为什么会发生错误(因为纹理大小限制)抱歉,这不是为什么 1600x1600 位图缩放为 2130x2130 的完整答案!!

    【讨论】:

    • 我知道限制,问题是为什么 1600x1600 图像被缩放到 2048x2048 以上的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多