自定义ImageView在Nexus 7上自动调整大小

时间:2013-03-04 11:07:46

标签: android android-imageview

我有一个覆盖整个屏幕的自定义ImageView。该图像来自其中一个可绘制文件夹,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应用)

有关为何会发生这种情况的任何想法?请提供一个解决方案,并解释为什么会发生这种情况。

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

我想分享一些关于你得到的错误信息..

根据Romain Guy (Android框架工程师)

  

使用硬件加速时,a的大小有限制   质地。渲染位图时,必须将其上传到OpenGL   纹理第一。您的位图恰好大于最大值   Xoom上的纹理大小(2048x2048。)您需要使用较小的位图或   将其拆分为几个位图。

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

Git: click here

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