안드로이드 개발 질문/답변
(글 수 45,052)
gridview에 그림을 한 20개 가량 올리니 outofmemory error가 뜨길래
sel_img = vi.inflate(R.layout.image_view, null);
BitmapFactory.Options options=new BitmapFactory.Options();
//options.inJustDecodeBounds=true;
options.inSampleSize=1;
final ImageView imageView = (ImageView)sel_img.findViewById(R.id.img1);
Bitmap bm = BitmapFactory.decodeResource( mContext.getResources(),grid_picture[position],options);
Bitmap resize = Bitmap.createScaledBitmap(bm, 80, 130, true);
TextView page_num = (TextView)sel_img.findViewById(R.id.gridview_page_num);
page_num.setText(Integer.toString(position+1));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(4, 4, 4, 4);
imageView.setImageBitmap(resize);
그리드뷰 어댑터의 getview에 이런식으로 bitmapfactory를 넣어서 돌렸습니다.
아직까진 로딩시간이 느리긴하지만 돌아가는데 그림들이 거의 뭉게져서 나옵니다.
메모리조절하면서 100개넘게도 그림을 올릴수있는 방법은 없을까요?
2011.04.14 14:37:25
(저도 초보라 정확하진 않습니다....)
리소스에서 사진파일을 가져오는데 비트맵 리사이즈까지는 안하셔도 됩니다. 사진파일들이 int형으로 배열 선언 되어 있을것으로 보이는데요 그렇다면 그냥 그 사진들을 바로 넣으시는게 나을거 같습니다.(폴더파일에서 가져온다면 리사이즈가 필요하기도 합니다.)
그리드뷰와 getview에 들어가는 imageview에 옵션을 주면 좋을것 같습니다.setScaleType으로 주고요 패딩도 주면 좋겠습니다.
bitmap으로 안되는건 아니지만, 그리드뷰안에 들어갈때 리사이즈가 되므로 로딩도 줄일수 있고 그리드뷰가 작은 사진을 보여준다는 특징상 없어도 무관할것입니다.



