2014-09-24 104 views
0

我創建了非常簡單的android應用程序,它顯示圖像。 代碼:ImageView我無法顯示圖像

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 


    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/textView1" 
     android:scaleType="matrix" 
     android:src="@drawable/img_big_size" 
    /> 

</RelativeLayout>  

此外我有兩個相同的圖片,第一img_big_size.jpg(尺寸468 KB)和第二img_small_size.jpg(尺寸192 KB)。 第一個圖像具有更高的分辨率,因此需要比第二個圖像更多的內存。 當我嘗試顯示第二個圖像(img_small_size.jpg)應用程序工作正常,並顯示圖像。 但是,當我嘗試顯示拳頭圖像(img_small_size.jpg)應用程序不顯示圖像只顯示黑屏。爲什麼我的應用程序無法顯示第一個圖像如何顯示第一個圖像?

我想顯示第一張圖片,因爲當我首先放大圖片時,圖片比第二張圖片更清晰。 。

鏈接到圖片: http://zapodaj.net/2096f7cc62055.jpg.html

http://zapodaj.net/cf7233054f2fc.jpg.html

+0

其中textView1在你的XML? – yrazlik 2014-09-24 19:29:47

回答

2

你的大圖像尺寸是捫:1571x2166

OpenGLRenderer硬件加速不能處理位圖比爲2048x2048大。您可以嘗試通過在AndroidManifest.xml文件中的內定義android:hardwareAccelerated =「false」來禁用硬件加速。

<application 
    android:hardwareAccelerated="false" 
    android:largeHeap="true" > 

或爲了獲得最佳性能,您可以在顯示圖像之前調整圖像大小。 保留大堆會顯着降低您的應用性能。

+0

如果我設置了android:hardwareAccelerated =「false」,會導致任何不好的後果嗎? – 2014-09-24 19:29:41

+0

閱讀http://developer.android.com/guide/topics/graphics/hardware-accel.html – 2014-09-24 19:46:19

+0

是的,如果你禁用該功能,它會增加你的應用程序RAM的使用量,並使你的應用程序資源消耗的應用程序!這不好。使用GPU渲染圖像的性能也會好得多。 – 2014-09-24 19:47:34