程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 圖片顯示-Android 項目中不能顯示兩張以上圖片

圖片顯示-Android 項目中不能顯示兩張以上圖片

編輯:編程綜合問答
Android 項目中不能顯示兩張以上圖片

public class MainActivity extends Activity {

private ImageView[] img=new ImageView[4];//聲明一個保存ImageView組件的數組
private int[] imagePath= new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04};//聲明並初始化一個保存訪問圖片的數組

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout=(LinearLayout) findViewById(R.id.layout); //獲取XML文件中定義的線性布局管理器
for (int i=0;i {
img[i]=new ImageView(this);//新創建一個ImageView組件
img[i].setImageResource(imagePath[i]);//設置要顯示的圖片
img[i].setPadding(5, 5, 5, 5);//設置ImageView顯示的內邊距
LayoutParams params=new LayoutParams(80,40);//設置圖片的寬和高
img[i].setLayoutParams(params);//為ImageView組件設置布局參數
layout.addView(img[i]);//將ImageView組件添加到布局管理器中
}
}
}
我建立的安卓4.2.2上的項目,但是上邊的程序運行一直出錯。如果把img長度設置為2,然後imagePath初始化為四個圖片中的任何兩個,就會成功了。請大神們指點是為什麼?
下邊是我的布局文件內容

xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:id="@+id/layout"
tools:context="${relativePackage}.${activityClass}"
>

最佳回答:


現已經找到了此問題的最終原因,因為setImageResource在運行時,會自動匹配相應質量的圖片,而且之後也沒有及時的資源回收機制,所以導致在加載第三張圖片的時候,內存溢出報錯(我建立的AVD所分配的內存比較小)。重新建立一個AVD4.0.3,並且把內存改為512M,就不會報錯了。如果非要針對內存比較小的Android,或者說是為了節約資源,就盡量不要用setImageBitmap或setImageResource或BitmapFactory.decodeResource來設置一張大圖,因為這些函數在完成decode後,最終都是通過java層的createBitmap來完成的,需要消耗更多內存。因此,改用先通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的 source,decodeStream最大的秘密在於其直接調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap,從而節省了java層的空間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved