赞
踩
harmonyOs 4.0 + Next星河版 开发学习文档 . LiuJinTao
test
2024年2月1日
为了方便模拟器对网络请求的权限,所以我们事先在module.json5 文件中进行配置好网络秦秋权限的配置 如下:
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
],
}
添加完毕后,我们模拟器就能正常的请求我们网络上面的资源了。
代码示例:
// 使用超链接网络加载的图片渲染
Image('https://res2.vmallres.com/pimages/uomcdn/CN/pms/202401/gbom/6942103109591/428_428_650AA2D1F4312445D02527C6CC0FD74Fmp.png')
.width(250)
效果展示:
// 使用本地资源图片渲染方式(resources目录下media文件中)
Image($r('app.media.icon'))
.width(250)
当然,我们上面说过,除了组件的通用属性外,还有一些组件独有的属性,如上图,图片看起来有点锯齿,此时就得使用Image组件上的插值属性了
.interpolation(ImageInterpolation.High) // update
当然这里使用的是预览模式,效果看起来不是很明显,大家使用模拟器或者真机效果会更加。
// 使用本地资源图片渲染方式(resources目录下rawfile文件中) 这种只需要写图片名字即可
Image($rawfile("mate60.png"))
.width(250)
.interpolation(ImageInterpolation.High)
}
第一步:配置字符串变量
1、在en_US目录中的string.json文件中配置如下代码
{
"String" : [
{
"name": "width_label",
"value": "Image Width:"
}
]
}
2、在zh_CN目录中的string.json文件中配置如下代码
{
"String" : [
{
"name": "width_label",
"value": "图片宽度: "
}
]
}
3、 在element目录中的string文件配置如下代码:
{
"String" : [
{
"name": "width_label",
"value": "图片宽度: " // 这里中英文都可以,因为会自动根据我们的语言进行自动匹配上面我们配置的(但是name必须一样)
}
]
}
4、 最后在我们页面中 ImagePage.ets 文件中使用
@Entry @Component struct ImagePage { // 这里我的文件名叫做 IamgePage @State message: string = 'Hello World' build() { Row() { Column() { Image($rawfile("mate60.png")) .width(250) .interpolation(ImageInterpolation.High) Text($r('app.string.width_label')) .fontSize(30) // 设置字体大小 .fontWeight(FontWeight.Bold) // 设置字体加粗 } .width('100%') } .height('100%') } }
@Entry @Component struct ImagePage { @State message: string = 'Hello World' @State imageWidth: number = 100 build() { Row() { Column() { // 设置图片 Image($rawfile("mate60.png")) .width(this.imageWidth) .interpolation(ImageInterpolation.High) // 设置文本 Text($r('app.string.width_label')) .fontSize(18) // 设置字体大小 .fontWeight(FontWeight.Bold) // 设置字体加粗 // * 设置输入框 TextInput({text: this.imageWidth.toFixed(0)}) // 值为图片宽度,然后类型转换 .width(100) .backgroundColor('#FFCCAA') // 输入框背景色 .type(InputType.Number) // 输入框类型 .onChange(value => { // 更新事件触发的箭头函数 this.imageWidth = parseInt(value) // 将输入的字符串转为数字赋值给变量 }) } .width('100%') } .height('100%') } }
@Entry @Component struct Index { @State imageWidth: number = 30 build() { Row() { Column() { Image($r('app.media.icon')) .width(this.imageWidth) .interpolation(ImageInterpolation.High) Text('图片宽度') .fontSize(20) .fontWeight(FontWeight.Bold) TextInput({text: this.imageWidth.toFixed(0)}) .width(150) .backgroundColor('#36D') .type(InputType.Number) .onChange( value => { // this.imageWidth = parseInt(value) }) Button('缩小') .width(80) .fontSize(20) .onClick(() => { if (this.imageWidth >= 10) { // 符合条件,允许放大 this.imageWidth -= 10 } }) Button('放大') .width(80) .fontSize(20) .type(ButtonType.Normal) .onClick(() => { // 符合条件,允许放大 if (this.imageWidth < 300) { this.imageWidth += 10 } }) } .width('100%') } .height('100%') } }
Slider({ value: this.imageWidth, min: 100, max: 300, step: 10, style: SliderStyle.InSet }) .width(300) .blockColor('#36D') .selectedColor('#ff0000') .showSteps(true) .showTips(true) .trackThickness(10) .onChange(value => { this.imageWidth = value })
效果图如下:
@Entry @Component struct Index { @State imageWidth: number = 150 build() { Column() { Row() { Image($r('app.media.penpenlaoshi')) .width(this.imageWidth) .interpolation(ImageInterpolation.High) } .width('100%') .height(400) .justifyContent(FlexAlign.Center) Row() { Text('图片宽度') .fontSize(20) .fontWeight(FontWeight.Bold) TextInput({text: this.imageWidth.toFixed(0)}) .width(150) .backgroundColor('#FFF') .type(InputType.Number) .fontSize(20) .onChange( value => { // this.imageWidth = parseInt(value) }) } .width('100%') .justifyContent(FlexAlign.SpaceBetween) .padding({ left: 15, right: 15}) Divider().strokeWidth(2).color('#F1F3F5') .width('91%') Row() { Button('缩小') .width(80) .fontSize(20) .onClick(() => { if (this.imageWidth >= 10) { // 符合条件,允许放大 this.imageWidth -= 10 } }) Button('放大') .width(80) .fontSize(20) .onClick(() => { // 符合条件,允许放大 if (this.imageWidth < 300) { this.imageWidth += 10 } }) } .width('100%') .justifyContent(FlexAlign.SpaceEvenly) .margin({top: 40, bottom: 66}) Slider({ value: this.imageWidth, min: 100, max: 300, step: 10, style: SliderStyle.InSet }) .width(300) .blockColor('#36D') .selectedColor('#FFAACC') .showSteps(true) .showTips(true) .trackThickness(10) .onChange(value => { this.imageWidth = value }) } .width('100%') .height('100%') } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。