Markwon/docs/v2/image-loader.html
Dimitry Ivanov b00d0efa9d deploy
2021-01-12 12:50:41 +03:00

105 lines
37 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Images | Markwon</title>
<meta name="description" content="Android markdown library based on commonmark specification that renders markdown as system-native Spannables (no WebView)">
<link rel="apple-touch-icon" sizes="180x180" href="/Markwon/apple-touch-icon.png?v=1">
<link rel="icon" type="image/png" sizes="16x16" href="/Markwon/favicon-16x16.png?v=1">
<link rel="icon" href="/Markwon/favicon.ico?v=1">
<link rel="icon" type="image/png" sizes="32x32" href="/Markwon/favicon-32x32.png?v=1">
<link rel="manifest" href="/Markwon/manifest.json?v=1">
<meta name="keywords" content="android,markdown,library,spannable,markwon,commonmark">
<link rel="preload" href="/Markwon/assets/css/0.styles.3fbbce9e.css" as="style"><link rel="preload" href="/Markwon/assets/js/app.bdfd2bc6.js" as="script"><link rel="preload" href="/Markwon/assets/js/26.87c7e366.js" as="script"><link rel="preload" href="/Markwon/assets/js/3.eaac0903.js" as="script"><link rel="preload" href="/Markwon/assets/js/12.98308542.js" as="script"><link rel="prefetch" href="/Markwon/assets/js/42.d7ca0851.js"><link rel="prefetch" href="/Markwon/assets/js/2.81714ae9.js"><link rel="prefetch" href="/Markwon/assets/js/4.31fa5321.js"><link rel="prefetch" href="/Markwon/assets/js/5.6234b6a3.js"><link rel="prefetch" href="/Markwon/assets/js/6.ef59e46d.js"><link rel="prefetch" href="/Markwon/assets/js/7.e9b37c71.js"><link rel="prefetch" href="/Markwon/assets/js/8.9dff76ac.js"><link rel="prefetch" href="/Markwon/assets/js/9.7d018a47.js"><link rel="prefetch" href="/Markwon/assets/js/10.99fc608c.js"><link rel="prefetch" href="/Markwon/assets/js/11.cdc173e9.js"><link rel="prefetch" href="/Markwon/assets/js/13.83b81b01.js"><link rel="prefetch" href="/Markwon/assets/js/14.0e5fe31e.js"><link rel="prefetch" href="/Markwon/assets/js/15.724f3dc4.js"><link rel="prefetch" href="/Markwon/assets/js/16.076204be.js"><link rel="prefetch" href="/Markwon/assets/js/17.9412daf3.js"><link rel="prefetch" href="/Markwon/assets/js/18.187f0167.js"><link rel="prefetch" href="/Markwon/assets/js/19.af3507a7.js"><link rel="prefetch" href="/Markwon/assets/js/20.dc11e22f.js"><link rel="prefetch" href="/Markwon/assets/js/21.393a507f.js"><link rel="prefetch" href="/Markwon/assets/js/22.a6ac92c5.js"><link rel="prefetch" href="/Markwon/assets/js/23.9edcc0b3.js"><link rel="prefetch" href="/Markwon/assets/js/24.073942b3.js"><link rel="prefetch" href="/Markwon/assets/js/25.507307eb.js"><link rel="prefetch" href="/Markwon/assets/js/27.a6f7a96f.js"><link rel="prefetch" href="/Markwon/assets/js/28.c0caacb4.js"><link rel="prefetch" href="/Markwon/assets/js/29.230c7321.js"><link rel="prefetch" href="/Markwon/assets/js/30.45e92827.js"><link rel="prefetch" href="/Markwon/assets/js/31.3a2ff699.js"><link rel="prefetch" href="/Markwon/assets/js/32.662e2ab9.js"><link rel="prefetch" href="/Markwon/assets/js/33.d83b2cb7.js"><link rel="prefetch" href="/Markwon/assets/js/34.4b19ef85.js"><link rel="prefetch" href="/Markwon/assets/js/35.1684da38.js"><link rel="prefetch" href="/Markwon/assets/js/36.9852715d.js"><link rel="prefetch" href="/Markwon/assets/js/37.e98b3352.js"><link rel="prefetch" href="/Markwon/assets/js/38.09771599.js"><link rel="prefetch" href="/Markwon/assets/js/39.37003a65.js"><link rel="prefetch" href="/Markwon/assets/js/40.bf595a01.js"><link rel="prefetch" href="/Markwon/assets/js/41.db50f781.js"><link rel="prefetch" href="/Markwon/assets/js/43.78500964.js"><link rel="prefetch" href="/Markwon/assets/js/44.60fec7f9.js"><link rel="prefetch" href="/Markwon/assets/js/45.78224b99.js"><link rel="prefetch" href="/Markwon/assets/js/46.9a7f306b.js"><link rel="prefetch" href="/Markwon/assets/js/47.42b56911.js"><link rel="prefetch" href="/Markwon/assets/js/48.cceb75d4.js"><link rel="prefetch" href="/Markwon/assets/js/49.20507df8.js"><link rel="prefetch" href="/Markwon/assets/js/50.f89d88b1.js"><link rel="prefetch" href="/Markwon/assets/js/51.d7ac54ce.js"><link rel="prefetch" href="/Markwon/assets/js/52.394ded4e.js"><link rel="prefetch" href="/Markwon/assets/js/53.144cf408.js"><link rel="prefetch" href="/Markwon/assets/js/54.0f936c4f.js"><link rel="prefetch" href="/Markwon/assets/js/55.5b7382a9.js"><link rel="prefetch" href="/Markwon/assets/js/56.1cf2f788.js"><link rel="prefetch" href="/Markwon/assets/js/57.1b7dddc1.js"><link rel="prefetch" href="/Markwon/assets/js/58.5271aaaf.js"><link rel="prefetch" href="/Markwon/assets/js/59.7ef6ac9a.js"><link rel="prefetch" href="/Markwon/assets/js/60.9bbfa80f.js"><link rel="prefetch" href="/Markwon/assets/js/61.628c1500.js"><link rel="prefetch" href="/Markwon/assets/js/62.d4d206d7.js"><link rel="prefetch" href="/Markwon/assets/js/63.8ccf8bfc.js"><link rel="prefetch" href="/Markwon/assets/js/64.7672a52b.js"><link rel="prefetch" href="/Markwon/assets/js/65.c4f000dc.js"><link rel="prefetch" href="/Markwon/assets/js/66.4a29728a.js"><link rel="prefetch" href="/Markwon/assets/js/67.7331c7c7.js"><link rel="prefetch" href="/Markwon/assets/js/68.9d1d2ae1.js"><link rel="prefetch" href="/Markwon/assets/js/69.fd31295a.js"><link rel="prefetch" href="/Markwon/assets/js/70.fac8f892.js"><link rel="prefetch" href="/Markwon/assets/js/71.c3fcfb65.js"><link rel="prefetch" href="/Markwon/assets/js/72.d2389fc9.js"><link rel="prefetch" href="/Markwon/assets/js/73.6ce21170.js"><link rel="prefetch" href="/Markwon/assets/js/74.2ad91074.js"><link rel="prefetch" href="/Markwon/assets/js/75.1d59d27c.js"><link rel="prefetch" href="/Markwon/assets/js/76.f3844391.js"><link rel="prefetch" href="/Markwon/assets/js/77.4e5a82c3.js"><link rel="prefetch" href="/Markwon/assets/js/78.ff7203ee.js"><link rel="prefetch" href="/Markwon/assets/js/79.b1718a0d.js"><link rel="prefetch" href="/Markwon/assets/js/80.802db0eb.js"><link rel="prefetch" href="/Markwon/assets/js/81.9edd3cd9.js"><link rel="prefetch" href="/Markwon/assets/js/82.52f04a34.js"><link rel="prefetch" href="/Markwon/assets/js/83.3bd397c0.js"><link rel="prefetch" href="/Markwon/assets/js/84.a9af8a34.js"><link rel="prefetch" href="/Markwon/assets/js/85.2a0d8d40.js">
<link rel="stylesheet" href="/Markwon/assets/css/0.styles.3fbbce9e.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/Markwon/" class="home-link router-link-active"><!----> <span class="site-name">Markwon</span></a> <div class="links" style="max-width:nullpx;"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/Markwon/docs/v4/install.html" class="nav-link">Install</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">API Version</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Latest</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/Markwon/" class="nav-link">4.x.x</a></li></ul></li><li class="dropdown-item"><h4>Legacy</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/Markwon/docs/v3/install.html" class="nav-link">3.x.x</a></li><li class="dropdown-subitem"><a href="/Markwon/docs/v2/" class="nav-link router-link-active">2.x.x</a></li></ul></li></ul></div></div><div class="nav-item"><a href="https://github.com/noties/Markwon/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="https://github.com/noties/Markwon" target="_blank" rel="noopener noreferrer" class="nav-link external">
Github
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/Markwon/docs/v4/install.html" class="nav-link">Install</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">API Version</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Latest</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/Markwon/" class="nav-link">4.x.x</a></li></ul></li><li class="dropdown-item"><h4>Legacy</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/Markwon/docs/v3/install.html" class="nav-link">3.x.x</a></li><li class="dropdown-subitem"><a href="/Markwon/docs/v2/" class="nav-link router-link-active">2.x.x</a></li></ul></li></ul></div></div><div class="nav-item"><a href="https://github.com/noties/Markwon/blob/master/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="nav-link external">
Changelog
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="https://github.com/noties/Markwon" target="_blank" rel="noopener noreferrer" class="nav-link external">
Github
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/Markwon/docs/v2/getting-started.html" class="sidebar-link">Getting started</a></li><li><a href="/Markwon/docs/v2/install.html" class="sidebar-link">Installation</a></li><li><a href="/Markwon/docs/v2/configure.html" class="sidebar-link">Configuration</a></li><li><a href="/Markwon/docs/v2/theme.html" class="sidebar-link">Theme</a></li><li><a href="/Markwon/docs/v2/factory.html" class="sidebar-link">Factory</a></li><li><a href="/Markwon/docs/v2/image-loader.html" class="active sidebar-link">Images</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#asyncdrawableloader" class="sidebar-link">AsyncDrawableLoader</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#scheme-support" class="sidebar-link">Scheme support</a></li></ul></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#configuration" class="sidebar-link">Configuration</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#okhttp-client" class="sidebar-link">OkHttp client</a></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#resources" class="sidebar-link">Resources</a></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#executor-service" class="sidebar-link">Executor service</a></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#error-drawable" class="sidebar-link">Error drawable</a></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#media-decoder" class="sidebar-link">Media decoder</a></li><li class="sidebar-sub-header"><a href="/Markwon/docs/v2/image-loader.html#scheme-handler" class="sidebar-link">Scheme handler</a></li></ul></li></ul></li><li><a href="/Markwon/docs/v2/syntax-highlight.html" class="sidebar-link">Syntax highlight</a></li><li><a href="/Markwon/docs/v2/html.html" class="sidebar-link">HTML</a></li><li><a href="/Markwon/docs/v2/view.html" class="sidebar-link">MarkwonView</a></li></ul> </div> <div class="page"> <div class="content"><h1 id="images"><a href="#images" aria-hidden="true" class="header-anchor">#</a> Images</h1> <div class="warning custom-block"><p class="custom-block-title">WARNING</p> <p>This is documentation for <u>legacy</u> versions. For the most current version <a href="/Markwon/">click here.</a></p></div> <p>By default <code>Markwon</code> doesn't handle images. Although <code>AsyncDrawable.Loader</code> is
defined in main artifact, it does not provide implementation.</p> <p>The interface is pretty simple:</p> <div class="language-java extra-class"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">Loader</span> <span class="token punctuation">{</span>
<span class="token keyword">void</span> <span class="token function">load</span><span class="token punctuation">(</span><span class="token annotation punctuation">@NonNull</span> String destination<span class="token punctuation">,</span> <span class="token annotation punctuation">@NonNull</span> AsyncDrawable drawable<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">cancel</span><span class="token punctuation">(</span><span class="token annotation punctuation">@NonNull</span> String destination<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre></div><h2 id="asyncdrawableloader"><a href="#asyncdrawableloader" aria-hidden="true" class="header-anchor">#</a> AsyncDrawableLoader</h2> <a href="http://search.maven.org/#search|ga|1|g%3A%22ru.noties%22%20AND%20a%3A%22markwon-image-loader%22"><img src="https://img.shields.io/maven-central/v/ru.noties/markwon-image-loader.svg?label=markwon-image-loader" alt="markwon-image-loader"></a> <p><code>AsyncDrawableLoader</code> from <code>markwon-image-loader</code> artifact can be used.</p> <div class="tip custom-block"><p class="custom-block-title">Install</p> <p><a href="/Markwon/docs/v2/install.html#image-loader">Learn how to add</a> <code>markwon-image-loader</code> to your project</p></div> <p>Default instance of <code>AsyncDrawableLoader</code> can be obtain like this:</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="scheme-support"><a href="#scheme-support" aria-hidden="true" class="header-anchor">#</a> Scheme support</h3> <p>By default <code>AsyncDrawableLoader</code> handles these URL schemes:</p> <ul><li><code>file</code> (including reference to <code>android_assets</code>)</li> <li><code>data</code> <span class="badge tip top" data-v-099ab69c>2.0.0</span> (<a href="https://en.wikipedia.org/wiki/Data_URI_scheme" target="_blank" rel="noopener noreferrer">wiki<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)
for inline image references</li> <li>all other schemes are considered to be network related and will be tried to obtain
from network</li></ul> <h4 id="data"><a href="#data" aria-hidden="true" class="header-anchor">#</a> Data <span class="badge tip top" data-v-099ab69c>2.0.0</span></h4> <p><code>data</code> scheme handler supports both <code>base64</code> encoded content and <code>plain</code>:</p> <div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==<span class="token punctuation">&quot;</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>Red dot<span class="token punctuation">&quot;</span></span> <span class="token punctuation">/&gt;</span></span>
</code></pre></div><div class="language-html extra-class"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">'</span>data:image/svg+xml,&lt;svg xmlns=<span class="token punctuation">&quot;</span>http://www.w3.org/2000/svg<span class="token punctuation">&quot;</span> aria-hidden=<span class="token punctuation">&quot;</span>true<span class="token punctuation">&quot;</span> x=<span class="token punctuation">&quot;</span>0px<span class="token punctuation">&quot;</span> y=<span class="token punctuation">&quot;</span>0px<span class="token punctuation">&quot;</span> viewBox=<span class="token punctuation">&quot;</span>0 0 100 100<span class="token punctuation">&quot;</span> width=<span class="token punctuation">&quot;</span>15<span class="token punctuation">&quot;</span> height=<span class="token punctuation">&quot;</span>15<span class="token punctuation">&quot;</span> class=<span class="token punctuation">&quot;</span>icon outbound<span class="token punctuation">&quot;</span>&gt;&lt;path fill=<span class="token punctuation">&quot;</span>currentColor<span class="token punctuation">&quot;</span> d=<span class="token punctuation">&quot;</span>M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z<span class="token punctuation">&quot;</span>&gt;&lt;/path&gt; &lt;polygon fill=<span class="token punctuation">&quot;</span>currentColor<span class="token punctuation">&quot;</span> points=<span class="token punctuation">&quot;</span>45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9<span class="token punctuation">&quot;</span>&gt;&lt;/polygon&gt;&lt;/svg&gt;<span class="token punctuation">'</span></span> <span class="token punctuation">&gt;</span></span>
</code></pre></div><div class="warning custom-block"><p class="custom-block-title">Note</p> <p>Data uri works with native markdown images, but only in base64 mode:</p> <div class="language-markdown extra-class"><pre class="language-markdown"><code><span class="token url">![svg](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgY2xhc3M9Imljb24gb3V0Ym91bmQiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTE4LjgsODUuMWg1NmwwLDBjMi4yLDAsNC0xLjgsNC00di0zMmgtOHYyOGgtNDh2LTQ4aDI4di04aC0zMmwwLDBjLTIuMiwwLTQsMS44LTQsNHY1NkMxNC44LDgzLjMsMTYuNiw4NS4xLDE4LjgsODUuMXoiPjwvcGF0aD4gPHBvbHlnb24gZmlsbD0iY3VycmVudENvbG9yIiBwb2ludHM9IjQ1LjcsNDguNyA1MS4zLDU0LjMgNzcuMiwyOC41IDc3LjIsMzcuMiA4NS4yLDM3LjIgODUuMiwxNC45IDYyLjgsMTQuOSA2Mi44LDIyLjkgNzEuNSwyMi45Ij48L3BvbHlnb24+PC9zdmc+)</span>
</code></pre></div></div> <h2 id="configuration"><a href="#configuration" aria-hidden="true" class="header-anchor">#</a> Configuration</h2> <p>If you wish to configure <code>AsyncDrawableLoader</code> <code>#builder</code> factory method can be used:</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="okhttp-client"><a href="#okhttp-client" aria-hidden="true" class="header-anchor">#</a> OkHttp client</h3> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">client</span><span class="token punctuation">(</span>OkHttpClient<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If not provided explicitly, default <code>new OkHttpClient()</code> will be used</p> <div class="warning custom-block"><p class="custom-block-title">WARNING</p> <p>This configuration option is scheduled to be removed in <code>3.0.0</code> version,
use <code>NetworkSchemeHandler.create(OkHttpClient)</code> directly by calling
<code>build.addSchemeHandler()</code></p></div> <h3 id="resources"><a href="#resources" aria-hidden="true" class="header-anchor">#</a> Resources</h3> <p><code>android.content.res.Resources</code> to be used when obtaining an image
from Android assets folder <strong>and</strong> to create Bitmaps.</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">resources</span><span class="token punctuation">(</span>Resources<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If not provided explicitly, default <code>Resources.getSystem()</code> will be used.</p> <div class="warning custom-block"><p class="custom-block-title">WARNING</p> <p><code>Resources.getSystem()</code> can have unexpected side-effects (plus loading from
assets won't work). As a rule of thumb
always provide <code>AsyncDrawableLoader</code> with your Application's <code>Resources</code>.
To quote Android documentation for <code>#getSystem</code> method:</p> <blockquote><p>Return a global shared Resources object that provides access to only
system resources (no application resources), and is not configured
for the current screen (can not use dimension units, does not
change based on orientation, etc).</p></blockquote></div> <div class="warning custom-block"><p class="custom-block-title">WARNING</p> <p>This configuration option is scheduled to be removed in <code>3.0.0</code>. Construct
your <code>MediaDecoder</code>s and <code>SchemeHandler</code>s appropriately and add them via
<code>build.addMediaDecoder()</code> and <code>builder.addSchemeHandler</code></p></div> <h3 id="executor-service"><a href="#executor-service" aria-hidden="true" class="header-anchor">#</a> Executor service</h3> <p><code>ExecutorService</code> to be used to download images in background thread</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">executorService</span><span class="token punctuation">(</span>ExecutorService<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If not provided explicitly, default <code>Executors.newCachedThreadPool()</code> will be used</p> <h3 id="error-drawable"><a href="#error-drawable" aria-hidden="true" class="header-anchor">#</a> Error drawable</h3> <p><code>errorDrawable</code> to be used when image loader encountered an error loading image</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">errorDrawable</span><span class="token punctuation">(</span>Drawable<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>if not provided explicitly, default <code>null</code> value will be used.</p> <h3 id="media-decoder"><a href="#media-decoder" aria-hidden="true" class="header-anchor">#</a> Media decoder <span class="badge tip top" data-v-099ab69c>1.1.0</span></h3> <p><code>MediaDecoder</code> is a simple asbtraction that encapsulates handling
of a specific image type.</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">addMediaDecoder</span><span class="token punctuation">(</span>MediaDecoder<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">addMediaDecoders</span><span class="token punctuation">(</span>MediaDecoder<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">addMediaDecoders</span><span class="token punctuation">(</span>Iterable<span class="token generics function"><span class="token punctuation">&lt;</span>MediaDecoder<span class="token punctuation">&gt;</span></span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>If not provided explicitly, default <code>MediaDecoder</code>s will be used (SVG, GIF, plain) with
provided <code>Resources</code> and <code>gif-autoplay=true</code></p> <p><code>markwon-image-loader</code> comes with 3 <code>MediaDecoder</code> implementations:</p> <ul><li><code>SvgMediaDecoder</code> (based on <a href="https://github.com/BigBadaboom/androidsvg" target="_blank" rel="noopener noreferrer">androidsvg<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)</li> <li><code>GifMediaDecoder</code> (based on <a href="https://github.com/koral--/android-gif-drawable" target="_blank" rel="noopener noreferrer">android-gif-drawable<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>)</li> <li><code>ImageMediaDecoder</code> (handling all <em>plain</em> images)</li></ul> <div class="tip custom-block"><p class="custom-block-title">TIP</p> <p>Always add a <em>generic</em> <code>MediaDecoder</code> instance at the end of the list.
Order does matter. For example:</p> <div class="language-java extra-class"><div class="highlight-lines"><br><br><br><br><div class="highlighted"> </div><br><br><br></div><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">mediaDecoders</span><span class="token punctuation">(</span>
SvgMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>Resources<span class="token punctuation">)</span><span class="token punctuation">,</span>
GifMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token keyword">boolean</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
ImageMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>Resources<span class="token punctuation">)</span>
<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div></div> <h4 id="svgmediadecoder"><a href="#svgmediadecoder" aria-hidden="true" class="header-anchor">#</a> SvgMediaDecoder</h4> <div class="language-java extra-class"><pre class="language-java"><code>SvgMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>Resources<span class="token punctuation">)</span>
</code></pre></div><h4 id="gifmediadecoder"><a href="#gifmediadecoder" aria-hidden="true" class="header-anchor">#</a> GifMediaDecoder</h4> <div class="language-java extra-class"><pre class="language-java"><code>GifMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token keyword">boolean</span><span class="token punctuation">)</span>
</code></pre></div><p><code>boolean</code> argument stands for <code>autoPlayGif</code></p> <h4 id="imagemediadecoder"><a href="#imagemediadecoder" aria-hidden="true" class="header-anchor">#</a> ImageMediaDecoder</h4> <div class="language-java extra-class"><pre class="language-java"><code>ImageMediaDecoder<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>Resources<span class="token punctuation">)</span>
</code></pre></div><h3 id="scheme-handler"><a href="#scheme-handler" aria-hidden="true" class="header-anchor">#</a> Scheme handler <span class="badge tip top" data-v-099ab69c>2.0.0</span></h3> <p>Starting with <code>2.0.0</code> <code>image-loader</code> module introduced
<code>SchemeHandler</code> abstraction</p> <div class="language-java extra-class"><pre class="language-java"><code>AsyncDrawableLoader<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">addSchemeHandler</span><span class="token punctuation">(</span>SchemeHandler<span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><p>Currently there are 3 <code>SchemeHandler</code>s that are bundled with this module:</p> <ul><li><code>NetworkSchemeHandler</code> (<code>http</code> and <code>https</code>)</li> <li><code>FileSchemeHandler</code> (<code>file</code>)</li> <li><code>DataUriSchemeHandler</code> (<code>data</code>)</li></ul> <h4 id="networkschemehandler"><a href="#networkschemehandler" aria-hidden="true" class="header-anchor">#</a> NetworkSchemeHandler <span class="badge tip top" data-v-099ab69c>2.0.0</span></h4> <div class="language-java extra-class"><pre class="language-java"><code>NetworkSchemeHandler<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span>OkHttpClient<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h4 id="fileschemehandler"><a href="#fileschemehandler" aria-hidden="true" class="header-anchor">#</a> FileSchemeHandler <span class="badge tip top" data-v-099ab69c>2.0.0</span></h4> <p>Simple file handler</p> <div class="language-java extra-class"><pre class="language-java"><code>FileSchemeHandler<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>File handler that additionally allows access to Android <code>assets</code> folder</p> <div class="language-java extra-class"><pre class="language-java"><code>FileSchemeHandler<span class="token punctuation">.</span><span class="token function">createWithAssets</span><span class="token punctuation">(</span>AssetManager<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h4 id="dataurischemehandler"><a href="#dataurischemehandler" aria-hidden="true" class="header-anchor">#</a> DataUriSchemeHandler <span class="badge tip top" data-v-099ab69c>2.0.0</span></h4> <div class="language-java extra-class"><pre class="language-java"><code>DataUriSchemeHandler<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><hr> <div class="warning custom-block"><p class="custom-block-title">WARNING</p> <p>Note that currently if no <code>SchemeHandler</code>s were provided via <code>builder.addSchemeHandler()</code>
call then all 3 default scheme handlers will be added. The same goes for <code>MediaDecoder</code>s
(<code>builder.addMediaDecoder</code>). This behavior is scheduled to be removed in <code>3.0.0</code></p></div></div> <div class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated: </span> <span class="time">6/17/2019, 2:08:33 PM</span></div></div> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/Markwon/docs/v2/factory.html" class="prev">
Factory
</a></span> <span class="next"><a href="/Markwon/docs/v2/syntax-highlight.html">
Syntax highlight
</a>
</span></p></div> </div> <!----></div></div>
<script src="/Markwon/assets/js/26.87c7e366.js" defer></script><script src="/Markwon/assets/js/3.eaac0903.js" defer></script><script src="/Markwon/assets/js/12.98308542.js" defer></script><script src="/Markwon/assets/js/app.bdfd2bc6.js" defer></script>
</body>
</html>