sample, imageSizeResolver usage
This commit is contained in:
parent
646e708c82
commit
bd3408beb3
@ -99,10 +99,6 @@ android {
|
||||
signingConfig signingConfigs.config
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// it seems to be a bug in NDK handling, github fail to build the project with the:
|
||||
// `com.android.builder.errors.EvalIssueException: No version of NDK matched the requested version 21.0.6113669. Versions available locally: 21.3.6528147`
|
||||
ndkVersion '22.0.7026061'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,16 @@
|
||||
[
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.image.ImageSizeResolverSample",
|
||||
"id": "20210201165512",
|
||||
"title": "ImageSizeResolver",
|
||||
"description": "Custom `ImageSizeResolver` that treats dimension values as density-based (like `dp`, `dip` in resources)",
|
||||
"artifacts": [
|
||||
"CORE"
|
||||
],
|
||||
"tags": [
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.html.InspectHtmlTextSample",
|
||||
"id": "20210201140501",
|
||||
|
@ -0,0 +1,64 @@
|
||||
package io.noties.markwon.app.samples.image
|
||||
|
||||
import android.content.res.Resources
|
||||
import io.noties.markwon.AbstractMarkwonPlugin
|
||||
import io.noties.markwon.Markwon
|
||||
import io.noties.markwon.MarkwonConfiguration
|
||||
import io.noties.markwon.app.sample.Tags
|
||||
import io.noties.markwon.app.sample.ui.MarkwonTextViewSample
|
||||
import io.noties.markwon.html.HtmlPlugin
|
||||
import io.noties.markwon.image.ImageSize
|
||||
import io.noties.markwon.image.ImageSizeResolverDef
|
||||
import io.noties.markwon.image.ImagesPlugin
|
||||
import io.noties.markwon.sample.annotations.MarkwonArtifact
|
||||
import io.noties.markwon.sample.annotations.MarkwonSampleInfo
|
||||
|
||||
@MarkwonSampleInfo(
|
||||
id = "20210201165512",
|
||||
title = "ImageSizeResolver",
|
||||
description = "Custom `ImageSizeResolver` that treats dimension values " +
|
||||
"as density-based (like `dp`, `dip` in resources)",
|
||||
artifacts = [MarkwonArtifact.CORE],
|
||||
tags = [Tags.image]
|
||||
)
|
||||
class ImageSizeResolverSample : MarkwonTextViewSample() {
|
||||
override fun render() {
|
||||
val image = "https://github.com/dcurtis/markdown-mark/raw/master/png/208x128-solid.png"
|
||||
val md = """
|
||||
**150px x 150px**: <img src="$image" width="150px" height="150px" alt="150px x 150px" />
|
||||
|
||||
**150 x 150**: <img src="$image" width="150" height="150" alt="150 x 150" />
|
||||
|
||||
**no dimension**: <img src="$image" alt="no dimension" />
|
||||
|
||||
**just width 150**: <img src="$image" width="150" alt="150" />
|
||||
""".trimIndent()
|
||||
|
||||
val markwon = Markwon.builder(context)
|
||||
.usePlugin(object : AbstractMarkwonPlugin() {
|
||||
override fun configureConfiguration(builder: MarkwonConfiguration.Builder) {
|
||||
builder.imageSizeResolver(DensityImageSizeResolver())
|
||||
}
|
||||
})
|
||||
.usePlugin(ImagesPlugin.create())
|
||||
.usePlugin(HtmlPlugin.create())
|
||||
.build()
|
||||
|
||||
markwon.setMarkdown(textView, md)
|
||||
}
|
||||
|
||||
class DensityImageSizeResolver : ImageSizeResolverDef() {
|
||||
|
||||
val density: Float by lazy(LazyThreadSafetyMode.NONE) {
|
||||
Resources.getSystem().displayMetrics.density
|
||||
}
|
||||
|
||||
override fun resolveAbsolute(dimension: ImageSize.Dimension, original: Int, textSize: Float): Int {
|
||||
if (dimension.unit == null) {
|
||||
// assume density pixels
|
||||
return (dimension.value * density + 0.5F).toInt()
|
||||
}
|
||||
return super.resolveAbsolute(dimension, original, textSize)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user