Sample, native and HTML image sample
This commit is contained in:
parent
72f6174db9
commit
ac05b07123
@ -1,4 +1,19 @@
|
||||
[
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.image.NativeAndHtmlImageSample",
|
||||
"id": "20200803115847",
|
||||
"title": "Native and HTML image",
|
||||
"description": "Define images in both native markdown and HTML. Native markdown images take 100% of available width",
|
||||
"artifacts": [
|
||||
"HTML",
|
||||
"IMAGE"
|
||||
],
|
||||
"tags": [
|
||||
"HTML",
|
||||
"image",
|
||||
"rendering"
|
||||
]
|
||||
},
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.BlockHandlerSample",
|
||||
"id": "20200729090524",
|
||||
@ -780,12 +795,13 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.GithubUserIssueOnTextAddedSample",
|
||||
"javaClassName": "io.noties.markwon.app.samples.GithubUserIssueInlineParsingSample",
|
||||
"id": "20200629162024",
|
||||
"title": "User mention and issue (via text)",
|
||||
"description": "Github-like user mention and issue rendering via `CorePlugin.OnTextAddedListener`",
|
||||
"artifacts": [
|
||||
"CORE"
|
||||
"CORE",
|
||||
"INLINE_PARSER"
|
||||
],
|
||||
"tags": [
|
||||
"parsing",
|
||||
@ -794,13 +810,12 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"javaClassName": "io.noties.markwon.app.samples.GithubUserIssueInlineParsingSample",
|
||||
"javaClassName": "io.noties.markwon.app.samples.GithubUserIssueOnTextAddedSample",
|
||||
"id": "20200629162024",
|
||||
"title": "User mention and issue (via text)",
|
||||
"description": "Github-like user mention and issue rendering via `CorePlugin.OnTextAddedListener`",
|
||||
"artifacts": [
|
||||
"CORE",
|
||||
"INLINE_PARSER"
|
||||
"CORE"
|
||||
],
|
||||
"tags": [
|
||||
"parsing",
|
||||
|
@ -0,0 +1,75 @@
|
||||
package io.noties.markwon.app.samples.image;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.commonmark.node.Image;
|
||||
|
||||
import io.noties.markwon.AbstractMarkwonPlugin;
|
||||
import io.noties.markwon.Markwon;
|
||||
import io.noties.markwon.MarkwonSpansFactory;
|
||||
import io.noties.markwon.RenderProps;
|
||||
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.AsyncDrawable;
|
||||
import io.noties.markwon.image.AsyncDrawableSpan;
|
||||
import io.noties.markwon.image.ImageProps;
|
||||
import io.noties.markwon.image.ImageSize;
|
||||
import io.noties.markwon.image.ImagesPlugin;
|
||||
import io.noties.markwon.sample.annotations.MarkwonArtifact;
|
||||
import io.noties.markwon.sample.annotations.MarkwonSampleInfo;
|
||||
|
||||
@MarkwonSampleInfo(
|
||||
id = "20200803115847",
|
||||
title = "Native and HTML image",
|
||||
description = "Define images in both native markdown and HTML. Native markdown images take 100% of available width",
|
||||
artifacts = {MarkwonArtifact.IMAGE, MarkwonArtifact.HTML},
|
||||
tags = {Tags.rendering, Tags.image, Tags.html}
|
||||
)
|
||||
public class NativeAndHtmlImageSample extends MarkwonTextViewSample {
|
||||
@Override
|
||||
public void render() {
|
||||
final String md = "" +
|
||||
"# Native image\n" +
|
||||
"\n\n" +
|
||||
"# HTML image\n" +
|
||||
"<img src=\"https://picsum.photos/id/237/1024/800\" width=\"100%\" height=\"auto\"></img>" +
|
||||
"";
|
||||
|
||||
final Markwon markwon = Markwon.builder(context)
|
||||
.usePlugin(ImagesPlugin.create())
|
||||
.usePlugin(HtmlPlugin.create())
|
||||
.usePlugin(new AbstractMarkwonPlugin() {
|
||||
@Override
|
||||
public void configureSpansFactory(@NonNull MarkwonSpansFactory.Builder builder) {
|
||||
builder.setFactory(Image.class, (configuration, props) -> new AsyncDrawableSpan(
|
||||
configuration.theme(),
|
||||
new AsyncDrawable(
|
||||
ImageProps.DESTINATION.require(props),
|
||||
configuration.asyncDrawableLoader(),
|
||||
configuration.imageSizeResolver(),
|
||||
imageSize(props)
|
||||
),
|
||||
AsyncDrawableSpan.ALIGN_BOTTOM,
|
||||
ImageProps.REPLACEMENT_TEXT_IS_LINK.get(props, false)
|
||||
));
|
||||
}
|
||||
})
|
||||
.build();
|
||||
|
||||
markwon.setMarkdown(textView, md);
|
||||
}
|
||||
|
||||
// Use defined image size or make its width 100%
|
||||
@NonNull
|
||||
private static ImageSize imageSize(@NonNull RenderProps props) {
|
||||
final ImageSize imageSize = ImageProps.IMAGE_SIZE.get(props);
|
||||
if (imageSize != null) {
|
||||
return imageSize;
|
||||
}
|
||||
return new ImageSize(
|
||||
new ImageSize.Dimension(100F, "%"),
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user