import { Group, Panel, coordinator, text, gravity, Color, LayoutSpec, log, vlayout, scroller, layoutConfig, image, ScaleType, Image, modal } from "doric"; import { colors, label } from "./utils"; import { img_base64 } from "./image_base64"; const imageUrl = 'https://img.zcool.cn/community/01e75b5da933daa801209e1ffa4649.jpg@1280w_1l_2o_100sh.jpg' import logo from "./images/logo_w.png" import button from "./images/button.png" @Entry class ImageDemo extends Panel { build(rootView: Group): void { let imageView: Image scroller( vlayout( [ text({ text: "Image Demo", layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST), textSize: 30, textColor: Color.WHITE, backgroundColor: colors[5], textAlignment: gravity().center(), height: 50, }), label('Button'), image({ imageBase64: button, scaleType: ScaleType.ScaleToFill, layoutConfig: { widthSpec: LayoutSpec.FIT, heightSpec: LayoutSpec.FIT, }, imageScale: 2, }), image({ imageBase64: button, scaleType: ScaleType.ScaleToFill, layoutConfig: { widthSpec: LayoutSpec.FIT, heightSpec: LayoutSpec.FIT, }, }), image({ imageBase64: button, scaleType: ScaleType.ScaleToFill, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, width: 200, height: 150 / 2.75, stretchInset: { left: 100, top: 0, right: 100, bottom: 0 }, imageScale: 2.75, }), image({ imageBase64: button, scaleType: ScaleType.ScaleToFill, layoutConfig: { widthSpec: LayoutSpec.JUST, heightSpec: LayoutSpec.JUST, }, width: 200, height: 75, stretchInset: { left: 100, top: 0, right: 100, bottom: 0 }, imageScale: 2, }), label('Gif'), image({ imageUrl: "https://misc.aotu.io/ONE-SUNDAY/world-cup_2014_42.gif", scaleType: ScaleType.ScaleToFill, loadCallback: function (ret) { log('this') log('loadCallback', ret) }, imageScale: 2, }), label('APNG'), image({ imageUrl: "https://misc.aotu.io/ONE-SUNDAY/world_cup_2014_42.png", loadCallback: (ret) => { } }), label('Animated WebP'), image({ imageUrl: "https://p.upyun.com/demo/webp/webp/animated-gif-0.webp", loadCallback: (ret) => { } }), label('WebP'), imageView = image({ imageUrl: "https://p.upyun.com/demo/webp/webp/jpg-0.webp", layoutConfig: layoutConfig().just(), width: 200, height: 200, // loadCallback: (ret) => { // if (ret) { // imageView.width = ret.width // imageView.height = ret.height // } // } }), label('ScaleToFill'), image({ imageUrl, width: 300, height: 300, isBlur: true, border: { width: 2, color: Color.GRAY, }, scaleType: ScaleType.ScaleToFill, layoutConfig: layoutConfig().just(), loadCallback: (ret) => { } }), label('ScaleAspectFit'), image({ imageUrl, width: 300, height: 300, border: { width: 2, color: Color.GRAY, }, scaleType: ScaleType.ScaleAspectFit, layoutConfig: layoutConfig().just(), }), label('ScaleAspectFill'), image({ imageUrl, width: 300, height: 300, border: { width: 2, color: Color.GRAY, }, scaleType: ScaleType.ScaleAspectFill, layoutConfig: layoutConfig().just(), }), label('ImageBase64'), image({ imageBase64: img_base64[0], width: 300, height: 300, border: { width: 2, color: Color.GRAY, }, scaleType: ScaleType.ScaleAspectFill, layoutConfig: layoutConfig().just(), }), label('StretchInset'), image({ imageBase64: img_base64[1], height: 60, width: 134, scaleType: ScaleType.ScaleAspectFill, layoutConfig: layoutConfig().just(), }), image({ imageBase64: img_base64[1], height: 60, width: 294, scaleType: ScaleType.ScaleToFill, layoutConfig: layoutConfig().just(), stretchInset: { left: 0.85, top: 0, right: 0.149, bottom: 0 } }), ], { layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT), gravity: gravity().center(), space: 10, }), { layoutConfig: layoutConfig().most(), } ).also(it => { coordinator(context).verticalScrolling({ scrollable: it, scrollRange: { start: 0, end: 100, }, target: "NavBar", changing: { name: "backgroundColor", start: Color.WHITE, end: Color.RED, } }) coordinator(context).verticalScrolling({ scrollable: it, scrollRange: { start: 0, end: 100, }, target: imageView, changing: { name: "width", start: 10, end: 200, } }) }).in(rootView) } onDestroy() { modal(context).toast('onDestroy') } }