{"id":1571,"date":"2021-06-08T10:25:32","date_gmt":"2021-06-08T02:25:32","guid":{"rendered":"http:\/\/wthee.xyz\/?p=1571"},"modified":"2021-06-08T10:25:32","modified_gmt":"2021-06-08T02:25:32","slug":"jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87","status":"publish","type":"post","link":"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87\/","title":{"rendered":"Jetpack Compose \u4f7f\u7528 Coil \u52a0\u8f7d\u56fe\u7247"},"content":{"rendered":"<blockquote>\n<p>Compose \u7248\u672c\uff1a1.0.0-beta08<\/p>\n<p>Accompanist  \u7248\u672c\uff1a0.11.1<\/p>\n<\/blockquote>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_38 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" style=\"display: none;\"><span style=\"display: flex;align-items: center;width: 35px;height: 30px;justify-content: center;\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87\/#%E6%B7%BB%E5%8A%A0%E4%BE%9D%E8%B5%96\" title=\"\u6dfb\u52a0\u4f9d\u8d56\">\u6dfb\u52a0\u4f9d\u8d56<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87\/#%E6%9D%83%E9%99%90\" title=\"\u6743\u9650\">\u6743\u9650<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87\/#Application-%E9%85%8D%E7%BD%AE\" title=\"Application \u914d\u7f6e\">Application \u914d\u7f6e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e4%bd%bf%e7%94%a8-coil-%e5%8a%a0%e8%bd%bd%e5%9b%be%e7%89%87\/#%E4%BD%BF%E7%94%A8\" title=\"\u4f7f\u7528\">\u4f7f\u7528<\/a><\/li><\/ul><\/nav><\/div>\n<h4><span class=\"ez-toc-section\" id=\"%E6%B7%BB%E5%8A%A0%E4%BE%9D%E8%B5%96\"><\/span>\u6dfb\u52a0\u4f9d\u8d56<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"\" data-line=\"\">\/\/Accompanist\nval accompanistVersion = &quot;0.11.1&quot;\nimplementation(&quot;com.google.accompanist:accompanist-coil:$accompanistVersion&quot;)\n\/\/\u9700\u52a0\u8f7d gif\uff0c\u53ef\u6dfb\u52a0\u6b64\u4f9d\u8d56\nimplementation(&quot;io.coil-kt:coil-gif:1.2.1&quot;)<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"%E6%9D%83%E9%99%90\"><\/span>\u6743\u9650<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"\" data-line=\"\">&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;\/&gt;<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Application-%E9%85%8D%E7%BD%AE\"><\/span>Application \u914d\u7f6e<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"\" data-line=\"\">class MyApplication : Application(), ImageLoaderFactory {\n\n    companion object {\n        @SuppressLint(&quot;StaticFieldLeak&quot;)\n        lateinit var context: Context\n    }\n\n    override fun onCreate() {\n        super.onCreate()\n        context = applicationContext\n    }\n\n    override fun newImageLoader(): ImageLoader {\n        return ImageLoader.Builder(context)\n            .componentRegistry {\n                \/\/ gif\n                if (SDK_INT &gt;= Build.VERSION_CODES.P) {\n                    add(ImageDecoderDecoder(context))\n                } else {\n                    add(GifDecoder())\n                }\n            }\n            .allowHardware(false)\n            .diskCachePolicy(CachePolicy.ENABLED)\n            .memoryCachePolicy(CachePolicy.ENABLED)\n            .networkCachePolicy(CachePolicy.ENABLED)\n            .availableMemoryPercentage(0.5)\n            .okHttpClient {\n                \/\/ \u81ea\u5b9a\u4e49 client\n                OkHttpClient.Builder()\n                    .retryOnConnectionFailure(true)\n                    .connectTimeout(10, TimeUnit.SECONDS)\n                    .writeTimeout(10, TimeUnit.SECONDS)\n                    .readTimeout(10, TimeUnit.SECONDS)\n                    .build()\n            }\n            .build()\n    }\n\n}<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"%E4%BD%BF%E7%94%A8\"><\/span>\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"\" data-line=\"\">@Composable\nfun LoadImage(url: String) {\n    val painter = rememberCoilPainter(request = url)\n\n    Image(\n        painter = when (painter.loadState) {\n            is ImageLoadState.Success -&gt; painter\n            is ImageLoadState.Loading -&gt; rememberCoilPainter(request = R.drawable.ic_launcher_foreground)\n            else -&gt; rememberCoilPainter(request = R.drawable.ic_launcher_background)\n        }, contentDescription = null\n    )\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Accompanist \u63d0\u4f9b\u4e86\u6613\u4e8e\u4f7f\u7528\u7684 Painter\uff0c\u5b83\u53ef\u4ee5\u4f7f\u7528 Coil \u56fe\u50cf\u52a0\u8f7d\u5e93\u4ece\u5916\u90e8\u6765\u6e90\uff08\u4f8b\u5982\u7f51\u7edc\uff09\u83b7\u53d6\u548c\u663e\u793a\u56fe\u50cf\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"default","_kad_post_title":"default","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":""},"categories":[3,19],"tags":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pcwHG0-pl","jetpack-related-posts":[{"id":1555,"url":"https:\/\/wthee.xyz\/index.php\/2021\/05\/31\/jetpack-compose-%e5%85%a5%e9%97%a8%e5%bf%85%e7%9c%8b%e7%9a%84%e6%96%87%e6%a1%a3-%e9%a1%b9%e7%9b%ae\/","url_meta":{"origin":1571,"position":0},"title":"Jetpack Compose \u5165\u95e8\u5fc5\u770b\u7684\u6587\u6863\/\u9879\u76ee","author":"wthee","date":"2021\u5e745\u670831\u65e5","format":false,"excerpt":"Jetpack Compose \u76f8\u5173\u7684\u4e00\u4e9b\u6587\u6863\/\u9879\u76ee\u6c47\u603b","rel":"","context":"\u5728\u201cJetpack Compose\u201d\u4e2d","block_context":{"text":"Jetpack Compose","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/jetpack-compose\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/wthee.xyz\/wp-content\/uploads\/2021\/05\/jetpack_compose.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/wthee.xyz\/wp-content\/uploads\/2021\/05\/jetpack_compose.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/wthee.xyz\/wp-content\/uploads\/2021\/05\/jetpack_compose.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/wthee.xyz\/wp-content\/uploads\/2021\/05\/jetpack_compose.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/wthee.xyz\/wp-content\/uploads\/2021\/05\/jetpack_compose.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1569,"url":"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-%e6%9d%83%e9%99%90%e7%94%b3%e8%af%b7\/","url_meta":{"origin":1571,"position":1},"title":"Jetpack Compose \u6743\u9650\u7533\u8bf7","author":"wthee","date":"2021\u5e746\u67088\u65e5","format":false,"excerpt":"\u5728 Jetpack Compose \u4e2d\uff0c\u7533\u8bf7\u6743\u9650\u7684\u4e00\u79cd\u65b9\u5f0f","rel":"","context":"\u5728\u201cAndroid \u5f00\u53d1\u201d\u4e2d","block_context":{"text":"Android \u5f00\u53d1","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1588,"url":"https:\/\/wthee.xyz\/index.php\/2021\/06\/17\/jetpack-startup\/","url_meta":{"origin":1571,"position":2},"title":"Jetpack Startup","author":"wthee","date":"2021\u5e746\u670817\u65e5","format":false,"excerpt":"startup \u7248\u672c\uff1a1.0.0 Startup App Startup \u5e93\u63d0\u4f9b\u4e86\u4e00\u79cd\u5728\u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u2026","rel":"","context":"\u5728\u201cAndroid \u5f00\u53d1\u201d\u4e2d","block_context":{"text":"Android \u5f00\u53d1","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1563,"url":"https:\/\/wthee.xyz\/index.php\/2021\/06\/08\/jetpack-compose-chipgroup\/","url_meta":{"origin":1571,"position":3},"title":"Jetpack Compose ChipGroup","author":"wthee","date":"2021\u5e746\u67088\u65e5","format":false,"excerpt":"\u5b9e\u73b0 ChipGroup \u7ec4\u4ef6","rel":"","context":"\u5728\u201cAndroid \u5f00\u53d1\u201d\u4e2d","block_context":{"text":"Android \u5f00\u53d1","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1579,"url":"https:\/\/wthee.xyz\/index.php\/2021\/06\/09\/jetpack-compose-navigation-%e7%9a%84%e4%bd%bf%e7%94%a8\/","url_meta":{"origin":1571,"position":4},"title":"Jetpack Compose Navigation \u7684\u4f7f\u7528","author":"wthee","date":"2021\u5e746\u67089\u65e5","format":false,"excerpt":"Compose \u7248\u672c\uff1a1.0.0-beta08 Navigation \u7248\u672c\uff1a2.4.0-alpha0\u2026","rel":"","context":"\u5728\u201cAndroid \u5f00\u53d1\u201d\u4e2d","block_context":{"text":"Android \u5f00\u53d1","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":84,"url":"https:\/\/wthee.xyz\/index.php\/2020\/12\/15\/android-recyclerview-%e5%88%86%e7%bb%84%e6%98%be%e7%a4%ba\/","url_meta":{"origin":1571,"position":5},"title":"Android RecyclerView \u5206\u7ec4\u663e\u793a","author":"wthee","date":"2020\u5e7412\u670815\u65e5","format":false,"excerpt":"RecyclerView \u5206\u7ec4\u6548\u679c\u7684\u5b9e\u73b0\u65b9\u5f0f","rel":"","context":"\u5728\u201cAndroid \u5f00\u53d1\u201d\u4e2d","block_context":{"text":"Android \u5f00\u53d1","link":"https:\/\/wthee.xyz\/index.php\/category\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/posts\/1571"}],"collection":[{"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=1571"}],"version-history":[{"count":1,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/posts\/1571\/revisions"}],"predecessor-version":[{"id":1572,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/posts\/1571\/revisions\/1572"}],"wp:attachment":[{"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=1571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=1571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wthee.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=1571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}