Jason_White 2015-01-03 07:48 采纳率: 60%
浏览 2775
已采纳

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初始化为四个图片中的任何两个,就会成功了。请大神们指点是为什么?
下边是我的布局文件内容
<?xml version="1.0" encoding="utf-8"?>
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}"
>

  • 写回答

2条回答

  • Jason_White 2015-01-07 01:57
    关注

    现已经找到了此问题的最终原因,因为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条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘