2012-04-07 4 views
1

웹 페이지 HTML 및 이미지를 다운로드했습니다. 이제, 나는 그들을 사용자에게 보여 주려고 노력하고있다. 두 가지 방법을 시도했지만 사용법을 가장 잘 모르고 있습니다. 둘 다 그들의 문제가 있습니다.다운로드 한 웹 페이지 및 이미지로드 시도

TextView content = (TextView)findViewById(R.id.article_content); 

MyImageGetter mig = new MyImageGetter(this, urlId); 
Spanned span = Html.fromHtml(contents, mig, null); 
content.setText(span); 

정말이 두 가지 문제를 제외하고도 작동 방법 :

첫째, 나는 다음 코드를 사용하여 텍스트보기를 시도했다. 첫 번째, 그리고 가장 어려운 것은 기사에 많은 이미지가있을 때 OutOfMemory fc가 나옵니다. 다른 문제는 텍스트 뷰는 사용자 선택 장치와 방향에 따라 서로 다른 폭을 갖고

public class MyImageGetter implements Html.ImageGetter{ 

String urlId = null; 
Context c = null; 

public MyImageGetter(ArticleViewer articleViewer, String urlId2) { 
    c = articleViewer; 
    urlId = urlId2; 
} 

public Drawable getDrawable(String source) { 
    String[] brokenUrl = source.split("/"); 
    String imgName = brokenUrl[brokenUrl.length-1]; 

    File image = new File("/data/data/com.that1dev.RibbonReader/Offline/" + urlId + "/" + imgName); 
    Log.w("MyApp", image.getAbsolutePath()); 
    Bitmap bm = BitmapFactory.decodeFile(image.getAbsolutePath()); 

    Drawable d = new BitmapDrawable(c.getResources(), bm); 

    d.setBounds(0,0, d.getIntrinsicWidth(),d.getIntrinsicHeight()); 

    return d; 
} 

} 

다음과 같이 MyImageGetter 코드이다. 뷰의 이미지가 텍스트 뷰 너비보다 크면 이미지가 잘립니다. 그러나, 나는 그것을 스스로 어렵게 고칠 수 있다고 믿습니다. 나는 메모리 문제를 먼저 고치려고 노력하면서 너무 열심히 노력하지 않았다. 그러나 어느 쪽이든에 대한 어떤 도움이라도 대단히 감사 할 것입니다.

내가 시도한 다른 방법은 webview입니다.

WebView webContent = (WebView)findViewById(R.id.web_content); 

webContent.loadDataWithBaseURL("", contents[1], "text/html", "utf-8", ""); 
webContent.setBackgroundColor(Color.TRANSPARENT); 

불행히도 이것으로 불행하게도 배경은 내가 무엇을 시도하든간에 흰색으로 유지되고 엄청나게 추합니다. 나는 3.0과 4.0에서 그 작품을 해결할 수없는 것 같습니다.

제가 선택의 여지가 있다면 WebView에서 렌더링 한 방식으로 보였기 때문에 TextView 메서드가 실제로 작동하고 싶습니다.

답변

1

근본적으로 여기서하려는 것은 웹 콘텐츠의 렌더링 방식을 변경하는 것입니다. 웹 사이트 작가 (당신이 아닐지도 모르는)가 배경을 썼는지를 바꾸는 것입니다. 어쨌든 HTML 정말 웹 콘텐츠의 투명 배경을 지원하지 않기 때문에 당신이 시도 할 수 있습니다 내가 그 생각할 수있는 유일한 방법은 실제로 자바 스크립트를 통해 웹 콘텐츠를 편집하는 것입니다 : (

myWebView.loadUrl("javascript:document.body.style.backgroundImage=\'\'); 
    document.body.style.backgroundColor=\"#00FF00\");"); 

을 함께 위의 색상을 교체 원하는 색상) WebView를로드 한 후에 HTML에서 배경을 지우지 만 본문에없는 중첩 스타일에 대해서는 여전히 문제가 있습니다.

이미지 문제는 모든 이미지를 기본 크기로 열고 메모리에 보관하는 것입니다. WebView가 당신을 위해하는 일 중 하나는 웹 페이지 이미지의 렌더링을 (축소 된 것처럼) 계속 유지하는 것입니다. 메모리 사용 공간을 수정하려면 이미지를 디스크에 임시로 저장하고 사용자가 이미지가 필요한 위치로 스크롤했을 때만 이미지를 열면됩니다. 어떤 방법 으로든 쉽지는 않을 것입니다. 할당 된 힙 공간을 오버 플로우하지 않도록하는 유일한 방법입니다.

+0

webview 이미지와 textview 이미지의 크기는 어떻게 다른가요? 이 두 이미지는 대략 300x500 크기의 이미지로로드됩니다. 더 이상 축소시키려는 webview는 무엇입니까? 다른 애플 리케이션 (투명 webview 또는 메모리 안전한 텍스트보기)이 작업을 수행 할 수 있으며, 연습은 내가 거의 믿을 어려울 것이라고 상상할 수 없을만큼 일반적인 (거의 모든 오프라인 RSS 리더) 일반적입니다. –

+0

나는 이것에 대해 잘 모르겠다. 그러나 나는 webview가 그들을 화면에 보여주기 위해 이미지를 데시 멀게한다고 가정했다. 그러나 가장 큰 문제는 당신이 그것을 피할 수 있다면 그들을 즉시 기억하지 않는 것입니다. 또한 매니페스트의 앱을 기본 힙 공간보다 많은 것으로 표시하는 데 도움이 될 수 있습니다. – JRaymond

+0

힙 공간에 대한 정보 주셔서 감사합니다. 그것은 내가 찾고 있던 트릭을했다. 그렇게 많은 수의 이미지를 처리하는 유일한 방법 인 것처럼 보입니다.최대한 많은 메모리를 사용하는 것을 주저하고 있기 때문에 가능한 경우 웹 뷰를 작동하도록 노력할 것입니다.하지만 지금까지는 훌륭합니다. –

관련 문제