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

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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题