나는 비트 맵 그림을 표시하는 ListView를 가지고 있습니다. 이러한 비트 맵은 상당히 커집니다. ListView에서 스크롤하면 매우 무거워 보입니다. ListView를 최적화하기 위해 어떤 기법을 사용할 수 있습니까? 비트 맵을 메모리에 압축하거나 목록보기 메모리 관리를 향상시키는 방법을 다룰 수 있습니까?Android ListView 비트 맵 최적화
2
A
답변
4
첫째, 읽기,
http://developer.android.com/training/improving-layouts/smooth-scrolling.html
그것은 스레드 뷰 홀더 패턴에 대해 이야기하고, 이미지로드
. 또한,이 읽어http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
이 비트 맵에 대한 효율적인 메모리 캐시를 구축하는 방법에 대해 이야기
.충분하지 않다면 적용 할 수있는 또 다른 기술은 스크롤이 멈출 때까지 이미지로드를 피하는 것입니다. 이렇게하면 사용자가 목록 맨 아래로 튀어 나오는 경우 목록보기에서 모든 이미지를로드하지 못하게됩니다. 기본적으로,이 같은 일이,
pagerList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState != OnScrollListener.SCROLL_STATE_IDLE) {
return;
}
// load images for adapter views between first and first+count.
// depending on your memory requirements, you can pre-load additional
// images before first and after first+count to give a better
// user exp
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
first = firstVisibleItem;
count = visibleItemCount;
}
});
이것은 당신이 어댑터의 각 항목에 대한 ImageView
에 대한 핸들을 유지하는 것이 필요하므로 나중에 그것을 발견하고 그것으로 적절한 비트 맵을 설정할 수 있습니다. 이는 어댑터에 이미지 뷰 배열을 유지하는 것처럼 간단 할 수 있습니다. 여기서 인덱스 == 목록보기의 위치입니다.
0
나는 대부분 LruCache
가 BaseAdapter 클래스의 getView에서
@Override
public View getView(.....
..... . .
Bitmap image = getBitmapFromMemCache(name);
if (image == null)
{
image = decodeSampledBitmapFromUri(image_path.get(position), 64,64);
}
else
{
Log.i("loding. ", "from cache "+name);
}
// Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(details), 64, 64);
holder.img.setImageBitmap(image);
addBitmapToMemoryCache(name, image);
관련 문제
- 1. 비트 맵 성능 최적화 패턴
- 2. android 비트 맵 디더링
- 3. android 비트 맵 캐싱
- 4. 비트 맵 (Android)
- 5. Android 비트 맵 캐싱
- 6. Android 삭제 가능 비트 맵
- 7. 경로의 스탬프 비트 맵 - Android
- 8. android 비트 맵 - 모범 사례
- 9. Android 2.3에서 비트 맵 편집
- 10. 절대 좌표 비트 맵 android
- 11. android fragment : 재활용 비트 맵
- 12. Android 캔버스에 비트 맵 지우기
- 13. Android MapView 비트 맵 문제
- 14. Android - 비트 맵 품질 저하?
- 15. Android : 비트 맵 색상 지정
- 16. Android 배경 비트 맵 자르기
- 17. Android 위젯 비트 맵 크기
- 18. Java BufferedImage/Android 비트 맵
- 19. 비트 맵 메모리 오류 Android
- 20. Android RemoteControlClient 비트 맵 스케일링
- 21. Android 비트 맵 메모리 사용
- 22. Android 비트 맵 변환 수학
- 23. 캔버스에 빠른 드로잉 비트 맵 android ics
- 24. Android : Set ListView-Background
- 25. 비트 맵 메모리가 부족합니다.
- 26. 다른 비트 맵 아래의 비트 맵 GetPixel?
- 27. Android : 큰 비트 맵 뒤에 작은 비트 맵 및 큰 비트 맵을 배치하면 더 작은 비트 맵 모양이됩니다.
- 28. Android : 새 데이터로 비트 맵 새로 고침
- 29. Android Force 리사이클 큰 비트 맵?
- 30. 그레이 스케일 Iplimage to android 비트 맵
감사이 추가 캐시에서 목록 및로드 이미지를 최적화 할 수 LruCache를 사용! 나는 잠시 동안이 문제를 해결하는 방법에 대해 궁금해왔다. :) – nhaarman