2011-11-02 2 views
1

내 앱의 특정 폴더에 저장된 미리보기 이미지를 표시하려고합니다. 앱이 실행 중일 때 다운로드됩니다. ImageAdapter의 getView()를 호출 할 때 위젯에서 스 와이프 (스크롤) 할 때 SDcard에서 읽은 썸네일을 표시하려면 갤러리 위젯을 사용하고 있습니다. 첫째로 스크롤이 부드럽 지 않다. 나는 떨리는 것과 떨리는 것과 거의 같지 않다. 이 작업을 수행하는 효율적인 방법이 있습니까? 축소판을 메모리에 저장하려고했는데 스크롤이 부드럽지만 더 많은 축소판이 있으면 메모리 문제가 발생합니다.SDcard의 이미지를 사용하는 Android 갤러리 위젯

도움이 될만한 정보가 있으면 알려주세요.

안부

답변

0

당신은 HashMap의 같은 것을 사용하여 메모리에 이미지를 캐시해야하고 응용 프로그램은 Activity.onLowMemory()가 호출됩니다 메모리가 부족하면. 이 방법을 구현하고 현재 사용자에게 표시되지 않는 모든 이미지를 지우십시오.

또한 onLowMemory 대신 Activity.onTrimMemory()을 사용할 수 있습니다.

0

이 경우 GridView 및 Custom ImageAdapter를 사용할 수 있습니다. 및 Thumbnail의 경우 MediaStore 이미지 축소판을 직접 사용할 수 있습니다. 메모리 관련 문제가 없습니다.

final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; 
final String orderBy = MediaStore.Images.Media._ID; 
Cursor imagecursor = managedQuery(       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, MediaStore.Images.Media.DATA + " like ?", new String[] {file.getAbsoluteFile().toString()}, orderBy); 

int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID); 
imagecursor.moveToPosition(0); 
int id = imagecursor.getInt(image_column_index);     
thumbnails = MediaStore.Images.Thumbnails.getThumbnail(    getApplicationContext().getContentResolver(), id,MediaStore.Images.Thumbnails.MICRO_KIND, null); 
iv.setImageBitmap(thumbnails); 
+0

응답 해 주셔서 감사합니다. 하지만 갤러리 위젯을 사용하고 싶고 내 앱과 관련된 이미지 만 표시하고 싶습니다. MediaStore가 SD 카드의 모든 이미지를 올바르게 표시합니까? – Chandu

관련 문제