HarmonyOS 鸿蒙Next折叠屏设备图片显示问题:在适配时,折叠状态下图片显示正常,展开后图片被严重拉伸

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next折叠屏设备图片显示问题:在适配时,折叠状态下图片显示正常,展开后图片被严重拉伸 在适配折叠屏手机和平板时,发现在折叠状态下图片显示的是正常的,到了展开时图片被严重拉伸,试了将.9图放到工程里加载报错。这个应该怎么做适配

3 回复

折叠屏相关介绍:

@Entry
@Component
struct SetSlice {
  @State top: number = 0
  @State bottom: number = 0
  @State left: number = 0
  @State right: number = 0
  @State fit: ImageFit = ImageFit.Cover

  // bubble3 宽472px高200px
  @State w: number = px2vp(472)
  @State h: number = px2vp(200)

  build() {
    Column({ space: 10 }) {
      Stack() {
        Image($r('app.media.bubble3'))
          .width(this.w)
          .height(this.h)
          .borderRadius(4)
          .resizable({
            slice: {
              top: this.top,
              bottom: this.bottom,
              left: this.left,
              right: this.right
            }
          })
          .objectFit(this.fit)
        Divider().strokeWidth(1).color(Color.Red).position({ top: this.top })
        Divider().strokeWidth(1).color(Color.Yellow).position({ bottom: this.bottom })
        Divider().strokeWidth(1).color(Color.Blue).vertical(true).position({ left: this.left })
        Divider().strokeWidth(1).color(Color.Green).vertical(true).position({ right: this.right })
      }.width(this.w).height(this.h)

      Stack() {
        Text()
          .width(this.w)
          .height(this.h)
          .borderRadius(4)
          .backgroundImage($r('app.media.bubble3'))
          .backgroundImageSize({ width: this.w, height: this.h })
          .backgroundImageResizable({
            slice: {
              top: this.top,
              bottom: this.bottom,
              left: this.left,
              right: this.right
            }
          })
        Divider().strokeWidth(1).color(Color.Red).position({ top: this.top })
        Divider().strokeWidth(1).color(Color.Yellow).position({ bottom: this.bottom })
        Divider().strokeWidth(1).color(Color.Blue).vertical(true).position({ left: this.left })
        Divider().strokeWidth(1).color(Color.Green).vertical(true).position({ right: this.right })
      }.width(this.w).height(this.h)

      Row() {
        Button('add top to ' + this.top).fontSize(10).onClick(() => {
          this.top += 2
        })
        Button('add bottom ' + this.bottom).fontSize(10).onClick(() => {
          this.bottom += 2
        })
        Button('add left ' + this.left).fontSize(10).onClick(() => {
          this.left += 2
        })
        Button('add right ' + this.right).fontSize(10).onClick(() => {
          this.right += 2
        })
      }

      Row() {
        Button('reduce top to ' + this.top).fontSize(10).onClick(() => {
          this.top -= 2
        })
        Button('reduce bottom ' + this.bottom).fontSize(10).onClick(() => {
          this.bottom -= 2
        })
        Button('reduce left ' + this.left).fontSize(10).onClick(() => {
          this.left -= 2
        })
        Button('reduce right ' + this.right).fontSize(10).onClick(() => {
          this.right -= 2
        })
      }

      Row() {
        Button('add w' + this.w).fontSize(10).onClick(() => {
          this.w += 2
        })
        Button('add h' + this.h).fontSize(10).onClick(() => {
          this.h += 2
        })
      }

      Row() {
        Button('reduce w' + this.w).fontSize(10).onClick(() => {
          this.w -= 2
        })
        Button('reduce h' + this.h).fontSize(10).onClick(() => {
          this.h -= 2
        })
      }
    }.width('100%').height('100%').backgroundColor(Color.Pink).padding({ top: 10 })
  }
}

更多关于HarmonyOS 鸿蒙Next折叠屏设备图片显示问题:在适配时,折叠状态下图片显示正常,展开后图片被严重拉伸的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主你好 我也遇到了这种情况 你解决了吗 怎么解决的

针对HarmonyOS鸿蒙Next折叠屏设备图片显示问题,即在折叠状态下图片显示正常,但展开后图片被严重拉伸的现象,这通常是由于图片资源适配不当或布局参数设置不正确所导致。

在鸿蒙系统中,折叠屏设备具有不同的屏幕比例和分辨率,因此开发者需要在应用中针对折叠屏的不同状态(折叠和展开)进行专门的适配。具体来说,可以通过以下几种方式解决:

  1. 使用资源适配:为折叠屏的折叠和展开状态分别准备不同尺寸的图片资源,并在代码中根据当前屏幕状态动态加载。

  2. 调整布局参数:在布局文件中,为图片控件设置合适的布局参数,如使用ConstraintLayout等灵活的布局方式,确保图片在不同屏幕尺寸下都能正确显示。

  3. 编程动态调整:在代码中监听屏幕状态变化事件,当屏幕状态改变时,动态调整图片控件的大小和位置,以适应新的屏幕布局。

如果以上方法仍然无法解决问题,可能是由于代码中存在其他逻辑错误或鸿蒙系统的特定限制所导致。此时,建议详细检查相关代码和文档,或参考鸿蒙系统的官方示例和最佳实践。

如果问题依旧没法解决请联系官网客服,官网地址是: https://www.itying.com/category-93-b0.html

回到顶部