基本上我ImageView
在 UI 中有 4 个,我想为它们设置图像。以下是相关代码:
private void showPhoto() {
// (re)set the image button's image based on our photo
Photo p = mCrime.getPhoto();
BitmapDrawable b = null;
if (p != null) {
String path = getActivity()
.getFileStreamPath(p.getFilename()).getAbsolutePath();
Log.i(TAG,"shown picture name is: "+p.getFilename());
// b = PictureUtils.getScaledDrawable(getActivity(), path);
// Log.i(TAG,"entered!");
if (cachedImageNames.size()==0)
cachedImageNames.add(0,path);
else{
boolean isExisted = false;
for (String imagePath: cachedImageNames){
if (imagePath.equals(path)){
isExisted = true;
break;
//cachedImageNames.add(0,path);
}
}
if (!isExisted)
cachedImageNames.add(0,path);
}
}
mCrimes = CrimeLab.get(getActivity()).getCrimes();
// mPhotoView.setImageDrawable(b);
Log.i(TAG,"image names' list size is: "+cachedImageNames.size());
if(!(cachedImageNames.size()<imageViews.size())){
for (int i=0; i<imageViews.size(); i++){
b= PictureUtils.getScaledDrawable(getActivity(), cachedImageNames.get(i));
imageViews.get(i).setImageDrawable(b);
}
}
else{
for (int i=0; i<cachedImageNames.size(); i++){
b= PictureUtils.getScaledDrawable(getActivity(), cachedImageNames.get(i));
imageViews.get(i).setImageDrawable(b);
}
}
}
在控制台中,表明这一行:
b= PictureUtils.getScaledDrawable(getActivity(),cachedImageNames.get(i));
导致这样的错误:
java.lang.OutOfMemoryError: Failed to allocate a 51916812 byte allocation with 16777216 free bytes and 36MB until OOM
我真的很陌生android
......有什么建议吗?