import { Base64Resource, DrawableResource, Group, Panel, coordinator, text, gravity, Color, LayoutSpec, log, vlayout, scroller, layoutConfig, image, ScaleType, Image, modal, RemoteResource, MainBundleResource } 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({ image: Environment.platform === 'Android' ? new AndroidAssetsResource("assets/The_Parthenon_in_Athens.jpeg") : new MainBundleResource("assets/The_Parthenon_in_Athens.jpeg"), }), image({ image: new AssetsResource("The_Parthenon_in_Athens.jpeg"), }), image({ image: new RemoteResource("https://p.upyun.com/demo/webp/webp/jpg-0.webp"), }), image({ image: new Base64Resource(img_base64[0]), 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://www.w3.org/People/mimasa/test/imgformat/img/w3c_home_animation.gif", // scaleType: ScaleType.ScaleToFill, // imageScale: 3, // }), // label('APNG'), // image({ // imageUrl: "https://upload.wikimedia.org/wikipedia/commons/1/14/Animated_PNG_example_bouncing_beach_ball.png", // }), // label('Animated WebP'), // image({ // imageUrl: "https://p.upyun.com/demo/webp/webp/animated-gif-0.webp", // }), // 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') } }