2010-05-31 3 views
7

비트 맵 변수에 저장된 원격 소스에서로드 한 일부 이미지가 있고이를 표시하려고합니다. 이러한 이미지를 전환하는 것 외에도 사용자는 확대/축소하고 팬 할 수 있어야합니다. 내 첫 번째 아이디어는 어쨌든 내장 갤러리 응용 프로그램에 의도를 통해 전달하는 것이었지만 가능하지는 않습니다. 여러 곳에서 제안되는 솔루션은 이미 확대/축소 및 패닝을 지원하므로 WebView를 사용하고 있습니다. 내 질문에 내 비트 맵 데이터가 WebView에 어떻게 들어 가지? 먼저 파일에 써야합니까? 나중에 다시 제거해야합니까? 아니면 더 쉬운 방법이 있습니까?Android : WebView에서 비트 맵을 표시하는 가장 쉬운 방법은 무엇입니까?

비트 맵 데이터를 확대/축소 가능 이미지로 표시하는 더 나은 방법이 있습니까?

답변

0

결국 WebView에 만족하지 않아 결국 내 자신의 이미지보기 활동을 만들었습니다. 내가 어떻게했는지에 대한 자세한 설명은 in this post on google groups입니다.

4

webview를 사용하여 이미지를 원격으로 직접 볼 수 있습니다. 더 이상 이미지를 파일로 저장할 필요가 없습니다. 다음은 샘플 코드입니다.

myWebView.getSettings().setBuiltInZoomControls(true); //to get zoom functionalities 

String url = "http://....."; //url of your image 

String x= "<html><head><meta name=\"viewport\" content=\"width=device-width, minimum-scale=1.0\"/><style type=\"text/css\">html, body {margin: 0;padding: 0;} img {border: none;}</style><head><body style=\"background: black;\"><table><tr><td align=\"center\"><img src=\"" + url + "\" /></td></tr></table></body></html>"; 

myWebView.loadData(x, "text/html", "UTF-8"); 

스위칭 이미지에 대한, 당신은 단지 URL의 값을 변경할 수 있으며, 웹보기의 다시 loadData를 호출합니다.

+0

내가 이미로드 한 비트 맵 데이터를 전달하려는 이유는 내 응용 프로그램에서 이미지를 캐시 할 수 있기 때문에 (데이터베이스의 경우) 한 번만로드하면됩니다. –

+0

제가 아는 한, webview는 이미 캐싱 기능을 가지고 있습니다. 캐시 모드를 지정하여 작동을 무시할 수 있습니다. myWebView.getSettings(). setCacheMode (mode); 이 링크를 참조 할 수 있습니다. http://developer.android.com/intl/de/reference/android/webkit/WebSettings.html 'LOAD_CACHE_ELSE_NETWORK'을 (를) 콘텐츠가있는 경우 캐시를 사용하는 모드로 사용할 수 있습니다. 네트워크에서로드하십시오. 또 다른 방법은 webview를 사용하지 않고 수동으로 줌, 패닝 및 캐싱을 직접 처리하는 것입니다. 안드로이드 소스 코드의 카메라 패키지에서 ViewImage.java 코드를 볼 수 있습니다. – capecrawler

관련 문제