HarmonyOS鸿蒙Next中ShapeElement和ScaleElement怎么实现Android中的.9图效果

HarmonyOS鸿蒙Next中ShapeElement和ScaleElement怎么实现Android中的.9图效果 想实现一个类似Android的.9图片效果,搜索发现鸿蒙不支持,有答案说可以通过以上api实现,请问怎么实现呢,没找到对应的文档,参考链接如下

https://segmentfault.com/q/1010000044728543

3 回复

参考一下图片拉伸功能,看下是否可以满足,

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-image-V5

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-image.md#resizable11

Image组件当前已支持点九图,可以通过设置resizable达到图片拉伸的效果。

参考链接:

Image-图片与视频-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

参考demo:

@Builder
function BubbleBackground() {

  Image($r('app.media.startIcon'))
    .objectFit(ImageFit.Fill)
    .resizable({
      slice: {
        left: 10,
        right: 6,
        top: 10,
        bottom: 10
      }
    }).width("100%").height("100%")
}

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Text("测试").fontColor(Color.White)
      }.padding(10).background(BubbleBackground).margin({ left: 30 })
    }.height('100%')
  }
}

更多关于HarmonyOS鸿蒙Next中ShapeElement和ScaleElement怎么实现Android中的.9图效果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ShapeElementScaleElement可以通过组合使用来实现类似Android中的.9图效果。ShapeElement用于定义形状,而ScaleElement用于控制缩放行为。

首先,ShapeElement可以通过设置Shape属性来定义图像的可拉伸区域。类似Android的.9图,你可以指定图像的四个边作为可拉伸区域。例如,通过设置Shapestretch属性来定义上下左右的可拉伸区域。

其次,ScaleElement用于控制图像的缩放行为。通过设置ScaleElementscaleType属性,可以指定图像在缩放时如何处理。例如,scaleType可以设置为ScaleType.STRETCH,使图像在拉伸时保持指定区域的可拉伸性。

结合使用ShapeElementScaleElement,你可以实现类似Android.9图的效果。具体步骤如下:

  1. 使用ShapeElement定义图像的可拉伸区域,通过设置stretch属性来指定上下左右的可拉伸区域。
  2. 使用ScaleElement控制图像的缩放行为,通过设置scaleTypeScaleType.STRETCH,确保图像在拉伸时保持可拉伸区域的比例。

通过这种方式,可以在HarmonyOS鸿蒙Next中实现类似Android.9图的效果,确保图像在不同尺寸的屏幕上能够正确拉伸和显示。

在HarmonyOS鸿蒙Next中,ShapeElementScaleElement 无法直接实现类似Android中的.9图效果。.9图是一种特殊的图片格式,用于在不同分辨率下保持图片的拉伸效果。在HarmonyOS中,可以通过以下方式模拟实现:

  1. 使用.9.png图片:直接将.9.png图片作为资源文件,系统会自动处理拉伸效果。
  2. 自定义Drawable:通过PixelMapElement加载图片,并结合ScaleElement设置缩放模式为ScaleMode.STRETCH,手动处理图片的拉伸区域。

如果需要精确控制拉伸区域,建议直接使用.9.png图片,或通过代码手动调整图片的缩放和裁剪区域。

回到顶部