图像显示在模拟器上,但不在Android平板电脑上

时间:2012-04-02 16:59:35

标签: android

我正在开发一个Android应用程序,它从Web服务获取以base 64编码的图像,并在ImageView中显示它。

我的问题是图像在模拟器上正确显示,但是当在平板电脑上运行时(平板电脑ASUS Transformer with Android 4),ImageView在加载图像时似乎消失了。

这是我用来加载ImageView的代码:

ImageView imageView = (ImageView) this.findViewById(R.id.floor_map_view);
Bitmap image = BitmapFactory.decodeByteArray(result, 0, result.length);
imageView.setImageBitmap(image);

图像是从Web服务中正确获取的,正如我所说,它在模拟器上正确加载,而且我已经将接收到的基本64字符串与从我的Web服务发送的字符串进行了比较。

这是我的活动布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="#ffffff">


            <ImageView
                android:contentDescription="floorMapView"
                android:id="@+id/floor_map_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent" 
                android:src="#222222"
                />



</LinearLayout>

任何想法可能会发生什么?

谢谢。

编辑:在BitmapFactory.Options对象中使用inSampleSize并在decodeByteArray调用中使用它会使图像显示,但是,正如预期的那样,它应该比它应该小。

3 个答案:

答案 0 :(得分:1)

显然这是一个内存问题,用一个低的inSample值解决了它。这不是理想的,但至少它现在有效。 Strange out of memory issue while loading an image to a Bitmap object 令人失望,我认为iOS处理图像很糟糕。

答案 1 :(得分:0)

我要做的第一件事是使用调试器检查调试器和模拟器中imageViewimage的运行时值,看它们是否有所不同。如果他们这样做,深入了解调用堆栈以查明原因,可能是资源在一个环境中不在同一个位置,或者是多种原因中的任何一个。

如果事实证明图像正在加载到活动中,请使用HierarchyViewer检查活动的布局元素,并查看丢失视图的发生情况(如果它甚至完全丢失)。

答案 2 :(得分:0)

在AndroidManifest.xml文件中添加此行

   <uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>