2014-02-11 3 views
14

피카소를 사용하여 ViewPager을로드하는 데 사용하는 상당히 큰 이미지 URL 목록이 있습니다. 나는 의도를 통해 이러한 이미지에 대한 공유 기능을 제공 할 수 있어야합니다 (궁극적으로 ShareActionProvider을 통해 공유). 필자가 읽은 것으로부터, 피카소는 실제로 필요한 모든 도구를 제공하지만 실제로이 종류의 것을 처리 할 수 ​​있도록 제작되지 않았습니다.이미지 가져 오기 uri from picasso?

연구하기 전에 나의 계획은 url을 키와 비트 맵 값으로 사용하는 간단한 LruCache을 만드는 것이 었습니다. 이 캐싱은 Picasa의 Target 인터페이스를 통해 onBitmapLoaded에서 발생합니다. 이미지를 공유하고 싶을 때마다 캐시에서 비트 맵을 확인합니다. 그것이 없으면 나는 피카소와 함께 가져올거야. 이제는 캐시 된 비트 맵이 있어도 파일에 쓰겠습니다 (이 부분은 제대로 보이지 않습니다. 파일을 작성하여 우 리를 작성해야하나요?). uri 파일을 추가하십시오. 의도.

그러나 나는 Picasso.Builder을 사용하여 자신의 캐시 (https://stackoverflow.com/a/18552559/413254)를 설정할 수 있음을 확인합니다. 이

내 질문은, 어떻게 피카소는이 캐시를 사용합니까있다

나는 등 정확한 재활용, 검색을 보장하기 위해 제대로 구현 hashCodeequals 방법과 사용자 정의 Target과 혼란 멀리 할 수있는 의미? 열쇠는 무엇입니까? 디스크에 쓰지 않고 비트 맵 Uri를 얻을 수있는 방법이 있습니까?

+0

피카소는 요청에서 키를 저장합니다. 키는 URL과 모든 고유 변환 키 (예 : 크기 조정, 회전 및 사용자 정의 변환)를 사용하여 작성됩니다. – dnkoutso

+0

안녕하세요 @loeschg 당신이 이것을위한 해결책을 얻었습니까? Okdttloader와 함께 Picasso를 사용하여 SD 카드의 이미지를로드합니다. 나는 주어진 URL로 이미지 URI를 얻고 싶다. 당신의 코드를 나에게 알려주시겠습니까? – Noundla

+0

@Noundla 불행히도, 나는 내가 그랬다는 것을 믿지 않는다. 나는 내 자신의 LruCache를 사용하여 그것을 얻었을 것입니다. 잠시만 기다려주세요. \\ _ (ツ) _/¯ – loeschg

답변

0

ShareActionProvider을 사용하여 현재 페이지의 이미지를 공유하려는 경우 자신의 이미지 캐시를 유지할 필요가 없습니다. 하지만이를 다른 사람들과 공유하려면 이미지가 장치의 공유 파일 시스템에 있어야합니다.

당신이 (좋은 결정입니다) 피카소를 사용하려는 경우 Universal Image Loader

같은 사용자 정의 디스크 캐시를 지원하는 이미지 로딩 라이브러리를 사용하는 경우 그것은 더 좋을 것이다.

모든 페이지를 변경할 때마다 이미지 사본을 저장해야합니다.

또는 Picasso에 맞춤 네트워크 처리기를 제공하고 맞춤 캐시 구현을 설정할 수 있습니다. 원하는 형식으로 파일을 저장하는 사용자 지정 캐싱을 사용하여 OkHttp를 사용하는 것이 좋습니다. 그렇게하면 이미지 URL을 장치의 파일 경로로 변환하는 기능이 있어야합니다.

모든 페이지가 변경 될 때 ViewPager 안에 Fragment이 있으면 ShareActionProvider을 단편에 넣으십시오.

ShareActionProvider의 참조 번호는 onCreateOptionsMenu입니다. 그리고 당신이 얻는 파일 경로로 인 텐트를 설정하십시오.

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
Uri phototUri = Uri.parse(Utils.getFilePath(imageUrl)); 
shareIntent.setData(phototUri); 
shareIntent.setType("image/png"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, phototUri); 
mShareActionProvider.setShareIntent(intent); 

편집 : 내가 선호하는 다른 옵션은 ShareActionProvider 도랑이에 대한 일반 메뉴 항목을 사용하는 것입니다. ShareActionProvider의 문제점은 공유하기 전에 사용자가 공유 할 수있는 공유 Intent을 준비해야한다는 것입니다. 사용자가 공유하지 않더라도 준비를해야합니다.

하지만 정상적인 버튼이있는 경우 사용자가 공유 버튼을 클릭 할 때만 작업하기 때문에 훨씬 쉽습니다. 이 경우 Picasso에서 Target 개체로 이미지를 한 번 더 요청하고 Bitmap을 공유 외부 파일 시스템에있는 파일로 작성하여 공유 할 수 있습니다.