Android 使用WebView加載大圖片

Android 中ImageView加載超長圖片會報一個警告,并且無法在ImageView上渲染圖片。

OpenGLRenderer: Bitmap too large to be uploaded into a texture (440x13323, max=4096x4096)

據(jù)查葡公,開啟了硬件加速后揭朝,OpenGLRenderer能夠加載Bitmap的具有限制最大值捆等。
eg:當(dāng)前的最大限制是 4096x4096
這個限制的最大值可以根據(jù)方法獲得:

canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()

當(dāng)ImageView無法渲染這些圖片的時候,我們可以使用WebView來顯示這張圖片

我們需要借助一個庫 jsoup蜒车,一個Java 的HTML解析器
下面來說具體的實現(xiàn)。

1幔嗦、在assets下新建一個html文件酿愧,名為largeimg.xml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="application/vnd.wap.xhtml+xml;charset=utf-8"/>

</head>
<body>


</body>

</html>

2、利用jsoup中的Document類邀泉,進行html的解析嬉挡,獲取到html的字符串。

  BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(getAssets().open(
                    "largeimg.html"), "UTF-8"));
            String mLine = reader.readLine();
            while (mLine != null) {
                mHtml += mLine;
                mLine = reader.readLine();
            }
            Log.e("TAG", "mHtml >> " + mHtml);
            doc = Jsoup.parse(mHtml);
        } catch (IOException e) {
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    // log the exception
                }
            }
        }

3汇恤、設(shè)置webview庞钢,構(gòu)建html代碼

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(false);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        readNativeTemplateFile();//第二步驟中的代碼
        Elements body = doc.select("body");
        webView.addJavascriptInterface(new JsObject(), "injectObject");//第4步驟
        body.html("<div><img width=\"100%\" height=\"auto\" src=\"" + imgUrl + "\" onclick='javascript:injectObject.close();' />"
                + "</div>");
        webView.loadDataWithBaseURL(
                "file:///android_asset/", doc.html(),
                "text/html", "UTF-8", "");

4、addJavascriptInterface

  class JsObject {
        JsObject() {
        }

        public String toString() {
            return "injectedObject";
        }

        @JavascriptInterface
        public void close() {
            finish();//finish掉當(dāng)前的activity
        }
    }

至此因谎,webview就可以顯示一張圖片了基括。

附:jsoup下載地址 https://jsoup.org/download

PS:可以通過關(guān)閉硬件加速的方法直接加載大圖片
在AndroidManifest.xml中設(shè)置<application>的屬性

android:hardwareAccelerated="false"

這樣也可以直接加載大圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市财岔,隨后出現(xiàn)的幾起案子风皿,更是在濱河造成了極大的恐慌,老刑警劉巖匠璧,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桐款,死亡現(xiàn)場離奇詭異,居然都是意外死亡夷恍,警方通過查閱死者的電腦和手機魔眨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酿雪,“玉大人遏暴,你說我怎么就攤上這事≈春纾” “怎么了拓挥?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袋励。 經(jīng)常有香客問我,道長当叭,這世上最難降的妖魔是什么茬故? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蚁鳖,結(jié)果婚禮上磺芭,老公的妹妹穿的比我還像新娘。我一直安慰自己醉箕,他們只是感情好钾腺,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布徙垫。 她就那樣靜靜地躺著,像睡著了一般放棒。 火紅的嫁衣襯著肌膚如雪姻报。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天间螟,我揣著相機與錄音吴旋,去河邊找鬼。 笑死厢破,一個胖子當(dāng)著我的面吹牛荣瑟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摩泪,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼笆焰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了见坑?” 一聲冷哼從身側(cè)響起嚷掠,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳄梅,沒想到半個月后叠国,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡戴尸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年粟焊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孙蒙。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡项棠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挎峦,到底是詐尸還是另有隱情香追,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布坦胶,位于F島的核電站透典,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏顿苇。R本人自食惡果不足惜峭咒,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纪岁。 院中可真熱鬧凑队,春花似錦、人聲如沸幔翰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叫惊,卻和暖如春款青,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赋访。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工可都, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚓耽。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓渠牲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親步悠。 傳聞我的和親對象是個殘疾皇子签杈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評論 25 707
  • 花開花落又一春, 匆匆忙忙過路人鼎兽。 哪里覓得時光影答姥, 幾縷白發(fā)幾道紋。
    孫衛(wèi)衛(wèi)閱讀 205評論 0 1
  • 放下手機 包治百病
    晴窗細分茶閱讀 167評論 0 0
  • 一輩子不長谚咬,每晚睡覺前原諒所有的人或事
    吾本良人閱讀 152評論 0 0
  • 1.對考研沒有信心鹦付,猶豫不決 扎實基礎(chǔ),一步步學(xué)習(xí)自然有信心择卦。 2.不確定所選專業(yè)是否是自己喜歡的 不斷去嘗試敲长,去...
    小白菜炒肉閱讀 312評論 0 0