마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰에 백그라운드 넣을 시 스크롤이 느려집니다.

0 추천

안녕하세요. 

리스트뷰에 내가 가진 음악 정보를 출력하는 앱을 개발중입니다.

일반적인 리스트뷰에 어댑터를 달아서 구현하였고, 잘 됩니다.

 

그런데, UI를 입히려고 ListView에 속성값으로 background를 주었더니

스크롤링이 엄청 버벅거리는 현상이 발생합니다. 

물론, 적용 전에는 꽤 빠릿빠릿 했구요.

 

ListView에 추가한 속성값은

background=@"drawalbe/xxxx"

cacheColorHint="#00000000"

입니다.

 

구글링도 해보고 레퍼런스도 찾아봤는데

제가 막눈이라 그런지 해결방법을 잘 모르겠습니다.

 

노하우를 공유해 주셨으면 합니다.

 

 

참고1 . drawble대신에 @android:color/white등을 넣었을때는 빠릅니다. 

아무래도 drawable 이미지를 사용해서 느린것으로 보입니다.

참고2. 각각 이미지는 디바이스 해상도에 맞는 drawable  폴더에 넣었습니다.

참고3. setScrollingCacheEnabled(false); 도 해보았습니다.

쿠마코 (650 포인트) 님이 2013년 6월 11일 질문

1개의 답변

0 추천
 
채택된 답변
이미지가 크면 로딩하는데 버벅일 수 있겠죠.

보통 리스트뷰 구현할때 이미지같은 경우는 쓰레드를 사용해서 많이 돌립니다.

일단 텍스트 등의 정보를 먼저 올리고, 이미지는 쓰레드로 박아서 로딩이 끝나면 붙이도록 사용하는 경우가 많습니다.

리스트 드래그 해보면 첨에 이미지 안뜨다가 서서히 이미지 한개씩 붙는거 보셨으면 그런방식이에요.
기초개발자 (24,060 포인트) 님이 2013년 6월 11일 답변
쿠마코님이 2013년 6월 11일 채택됨
해결했습니다.
쓰레드로 이미지를 불러오는 부분은 없고, 그냥 리스트뷰의 백그라운드였는데.. 그냥 단일 색 정보를 갖는 color.xml 을 만들어서 사용했습니다.

아무래도 안드로이드 쓰면서 이미지 쓰는게 가장 어려운거 같아요 ㅠㅠ..
당연히 colors 안에다 xml을 넣으면 빠르죠^^;
그건 속성만 변경시키는거라 메모리에 부담이 없잖아요ㅎ
그에반해 drawable에 넣어서 가져오면 안드로이드에서 bitmap으로 바꾼후에 배경으로 붙이는거에요ㅎ
그니깐 직접 비트맵으로 가져와서 배경으로 붙이는거랑 바로 setbackgroundresource로 붙이는거랑 메모리 부담은 똑같애요..
색상을 변경하기 위한거라면 하신거처럼 colors 안에 xml로 변경하는게 메모리부담없이 좋겟죠..
...