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

그리드뷰에 영상을 썸네일을 가져와 띄우고 싶습니다.

0 추천

제가 안드로이드 시작한지 얼마 안되어 기반이 많이 부족합니다...

 

그리드뷰에 썸네일을 가져와 띄우고 싶습니다.

그러기 위해서 시도한것이 이미지의 썸네일 주소와 실제 이미지의 주소를 모두 가져와 map등에 저장하고

getview에서 map에 있는 정보를 이용하여 빠르게 영상을 로드 할 수 있지 않을까 해서 시도해보고 있습니다..만..

잘 안되는군요...

 

궁금 1. managedQuery() 의 자세한 사용법이 나와있는곳이 있을까요? 이 함수가 어떻게 동작되는건지 알고 싶은데 어디서 찾아봐야 할지 잘 모르겠습니다...

궁금 2. 이러저러해서 실제 이미지와 썸네일이 따로 구분되어 있다는건 알게 된것 같습니다. 그런데 썸네일의 ID와 실제 이미지의 ID가 다른가 보더라구요?.. 즉 MediaStore.Images.Media._ID 라는것이 MediaStore.Images.Thumbnails._ID이 다른건지..

이미지 해쉬맵에 key : position      ||      value: path, ID

썸네일 해쉬맵 key: ID     ||      value: thumbnail path

이렇게 저장하고 이미지 해쉬맵을 모두 채운 후 getview에서 해당 포지션에 채울 이미지를 해쉬맵에 ID로 검색해서 나오는 경로를 저장했는데 전혀 엉뚱한 영상이 몇개 나오고 말더군요..(그 몇개 나올때 로딩은 없더군요.. 방법은 맞는구나 싶은데 영상이 엉뚱한걸로 몇개 안나와서...ㅜㅜ)

이미지의 정보를 알고있다면 썸네일의 정보(경로 등의)정보를 쉽게 알 수 있는 방법이 있나요?

인터넷 등에서 구해본 소스로는 로딩이 좀 있습니다..

 HashMap<String,CellData> 	m_cStorage;
	HashMap<String,String> 		m_cThumbPaths;
	
	
	class CellData
	{
		public long		nID;
		public String 	szID;
		public String 	szImagePath;
		public String 	szThumbPath;
	}


	void getImageInfo()
		{
			
			String[] proj = {
					MediaStore.Images.Media._ID,
					MediaStore.Images.Media.DATA,
					MediaStore.Images.Media.DISPLAY_NAME,
					MediaStore.Images.Media.SIZE};

			Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
					proj, null, null, null);

			String title;
			String thumbsID;
			String thumbsImageID;
			String thumbsData;
			String data;
			String imgSize;
			int num = 0;
			
			if (imageCursor != null && imageCursor.moveToFirst())
			{


				int thumbsIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media._ID);
				int thumbsDataCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA);
				int thumbsImageIDCol = imageCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
				int thumbsSizeCol = imageCursor.getColumnIndex(MediaStore.Images.Media.SIZE);
				
				do
				{
					thumbsID = imageCursor.getString(thumbsIDCol);
					thumbsData = imageCursor.getString(thumbsDataCol);
					thumbsImageID = imageCursor.getString(thumbsImageIDCol);
					imgSize = imageCursor.getString(thumbsSizeCol);
					
					if (thumbsImageID != null)
					{
						CellData szImagePath = new CellData();
						szImagePath.szID = thumbsID;
						szImagePath.szImagePath = thumbsData;
						szImagePath.szThumbPath = thumbsImageID;
						szImagePath.nID = imageCursor.getLong(thumbsIDCol);
						
						m_cStorage.put(Integer.toString(num), szImagePath);
						//thumbsIDs.add(thumbsID);
						//thumbsDatas.add(thumbsData);
					}
					num++;
				}while (imageCursor.moveToNext());
			}
			imageCursor.close();
			
			
			String[] projThumb = {
					MediaStore.Images.Thumbnails._ID,
					MediaStore.Images.Thumbnails.DATA};

			Cursor thumbCursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
					projThumb, null, null, null);
			
			
			if (thumbCursor != null && thumbCursor.moveToFirst())
			{

				int thumbsIDCol = thumbCursor.getColumnIndex(MediaStore.Images.Thumbnails._ID);
				int thumbsDataCol = thumbCursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA);
				num = 0;
				do
				{
					thumbsID = thumbCursor.getString(thumbsIDCol);
					thumbsData = thumbCursor.getString(thumbsDataCol);
					
					if (thumbsData != null)
					{
						m_cThumbPaths.put(thumbsID, thumbsData);
					}
					num++;
				}while (thumbCursor.moveToNext());
			}
			
			
			thumbCursor.close();
			return;
		
		}

	}

 

고등어루어 (160 포인트) 님이 2013년 7월 31일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...