Android - 应用程序在添加太多图像时崩溃了

时间:2012-11-25 16:52:58

标签: android

我的应用需要列出一个特定活动的文字和图片。列表的每一行都有2列 - 1表示图像,1表示字符串。

如果图像数量很少(十个或更少),它可以工作。当它超过10(有时15)时,应用程序将崩溃。如何使这个工作超过十个图像?

以下是列出文本和图像的代码。前两行从strings.xml中检索数据。感谢。

            pic=res.obtainTypedArray(R.array.site_pic);
            arr_site = getResources().getStringArray(R.array.site_name); 

    TableLayout tl = (TableLayout)findViewById(R.id.myTableLayout);

    for(int i=0; i<num_site; i++)
    {
         final TableRow tr = new TableRow(this);

         tr.setLayoutParams(new LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));
         tr.setPadding(0, 10, 0, 10);

         ImageView iv = new ImageView(this);
         iv.setImageDrawable(pic.getDrawable(i));
         iv.setAdjustViewBounds(true);
         iv.setMaxHeight(80);
         iv.setPadding(5, 5, 15, 5);             
         tr.addView(iv);

         TextView tv1 = new TextView(this);
         tv1.setText(arr_site[i]);
         tv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT));
         tv1.setGravity(Gravity.LEFT);           
         tr.addView(tv1);

         tl.addView(tr,new TableLayout.LayoutParams(
                 LayoutParams.FILL_PARENT,
                 LayoutParams.WRAP_CONTENT));                            
    }

2 个答案:

答案 0 :(得分:3)

如果您的图像尺寸是高分辨率,则可能是问题所在。根据我的经验,尽一切可能缩小图像尺寸 - 但保持质量至关重要。

此外,如果所有其他方法都失败了,那么轻松修复(如果你还没有尝试过)就是添加

<强>机器人:largeHeap = “真”

在AndroidManifest.xml文件的 <application> 标记内。 以下是我自己的清单文件中的示例:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:largeHeap="true">

答案 1 :(得分:1)

使用ViewHolder逻辑。使用ViewHolder时,滚动时图像会替换为其他图像。 另外,我建议您使用GridView来显示您说的项目。

以下是参考:http://developer.android.com/training/improving-layouts/smooth-scrolling.html

这是一个教程:http://www.learn2crack.com/2014/01/android-custom-gridview.html