안드로이드 개발 질문/답변
(글 수 45,052)
리스트 뷰에 이미지를 출력해야 하는데 에뮬에서는 다 잘되거든요.. 그런데 갤s에서 테스트하면 이미지가 자꾸 안나오네요 ㅠㅠ
DDMS 로 확인해보면 디코드 팔스 라고 뜨는데 대채 왜 이러는지 알수가 없어요 ..
이미지는 웹에서 가져오구요. 갤s에서 이미지가 안뜨는 이유는 뭔가요 ?ㅜ
2010.08.26 00:22:03
음 저도 개발하던 어플리케이션에 비슷한 경우가 있었어요(같은건가-_-;;)
웹상에 이미지를 불러서 화면에 띄어주는데 에뮬레이터에선 잘 동작했는데 겔스에 올려보니 안되더라구요
그래서 이미지주소를 url 로 만들고 비트맵에서 불러올때
URL url = new URL(image_url);
Bitmap bit = BitmapFactory.decodeStream(url.openStream);
확인해보니 저렇게 불러오면 뭔가 이미지의 파일 크기만큼 재대로 불러오지 못하더라구요
그래서
URL load_url = new URL(image_url); Log.i("in imageSel","in imageSe2"); InputStream in = load_url.openStream();
int te =1024;
byte[] temp_byte = new byte[1024];
int offset = 0;
int load_length = 1024;
int st =0;
List<Byte> byte_list = new ArrayList<Byte>();
byte btt[];
while( !((st = in.read(btt = new byte[te], offset, load_length)) == -1) ){
offset += st;
te = offset+load_length;
//Log.i("offset",String.valueOf(offset)); //Log.i("te",String.valueOf(te)); //Log.i("st",String.valueOf(st));
}
//Log.i("byte_list end",String.valueOf(byte_list.size()));
//Log.i("offset end ",String.valueOf(offset));
in.close();
InputStream rin = load_url.openStream(); int full = offset; offset = 0; int readsize= 0; byte[] load = new byte[full];
while( !((readsize = rin.read(load, offset, full- offset)) == -1 ) ){ //Log.i("two readsize",String.valueOf(readsize)); offset += readsize; //Log.i("two",String.valueOf(offset)); }
rin.close(); bit = BitmapFactory.decodeByteArray(load, 0, full);
이렇게해서 불러들이게 됩니다.
겔스에서 테스트하니 잘나온다고합니다.
근데 지금 소스는 while 문을 두번 도는데 한번으로 해서 할수 있는 방법이잇을가요? ㅋ
갤s라고 안 뜨는 이유가 있나요 ;;
이걸로만 봐선 확인불가;;;
좀더 자세히~