24.细解鸿蒙之元服务UX上架标准-宫格图片信息量适中

128 阅读6分钟

细解鸿蒙之元服务UX上架标准-宫格图片信息量适中

是否必须遵守:必须

标准项描述:

在应用程序的界面设计中,宫格图片控件是一种常见的元素,用于展示图片或其他视觉内容。宫格图片控件占比符合要求意味着其在整个界面中所占的比例满足特定的设计标准和用户需求。以下详细解释:

宫格图片控件占比的相关因素

功能需求:宫格图片控件的占比应根据其功能来确定。例如,在一个图片展示应用中,宫格图片控件可能需要占据较大的空间以展示图片的细节和内容。如果宫格图片控件用于展示产品图片,那么它的占比可能会根据产品的特点和展示需求进行调整。
布局设计:宫格图片控件的占比也与布局设计有关。布局设计需要考虑宫格图片控件与其他界面元素的关系,以及整个界面的视觉效果。例如,在一个包含多个宫格图片控件的界面中,宫格图片控件的占比可能会根据布局的整体规划进行调整,以实现最佳的视觉效果。
用户体验:宫格图片控件占比还应考虑用户的体验。用户在使用应用时,希望能够看到清晰、美观的图片展示。如果宫格图片控件占比过大,可能会导致图片显示过于拥挤,影响用户的视觉体验;如果占比过小,可能会无法充分展示图片内容,降低用户的满意度。
设备屏幕尺寸:宫格图片控件占比会受到设备屏幕尺寸的影响。不同设备屏幕尺寸不同,宫格图片控件在不同屏幕尺寸下的占比也会有所不同。例如,在大屏幕设备上,宫格图片控件可能会占据较大的空间;而在小屏幕设备上,宫格图片控件占比可能会相对较小。

符合要求的具体表现

比例合适:宫格图片控件占比应根据功能需求和布局设计确定合适的比例。例如,在一个图片展示应用中,宫格图片控件占比可能会根据图片的大小和数量进行调整。如果图片较大且数量较少,宫格图片控件占比可能会相对较大;如果图片较小且数量较多,宫格图片控件占比可能会相对较小。
布局合理:宫格图片控件在布局上应合理安排,与其他界面元素协调一致。宫格图片控件的占比应根据布局的整体规划进行调整,以实现最佳的视觉效果。例如,在一个包含多个宫格图片控件的界面中,宫格图片控件的占比可能会根据布局的不同而有所变化。
视觉效果良好:宫格图片控件占比应能够提供良好的视觉效果。宫格图片控件的占比应与图片内容和整体布局相匹配,使图片展示更加清晰、美观。例如,在一个图片展示应用中,宫格图片控件占比可能会根据图片的风格和展示需求进行调整,以提供最佳的视觉效果。
适应不同设备:宫格图片控件占比应能够适应不同设备屏幕尺寸。宫格图片控件在不同设备屏幕尺寸下的占比可能会有所不同,需要根据设备屏幕尺寸进行调整。例如,在大屏幕设备上,宫格图片控件占比可能会相对较大;而在小屏幕设备上,宫格图片控件占比可能会相对较小。

意义

提升用户体验:宫格图片控件占比符合要求能够提高用户在应用程序中的视觉体验。用户能够看到清晰、美观的图片展示,从而提高用户对应用的满意度。
优化功能展示:宫格图片控件占比合理能够更好地展示图片内容和功能。宫格图片控件的占比应根据功能需求和布局设计进行调整,以实现最佳的展示效果。
增强界面美观:宫格图片控件占比符合要求能够使界面更加美观、和谐。宫格图片控件的占比应与图片内容和整体布局相匹配,使图片展示更加清晰、美观。
适应不同设备:宫格图片控件占比能够适应不同设备屏幕尺寸。宫格图片控件在不同设备屏幕尺寸下的占比可能会有所不同,需要根据设备屏幕尺寸进行调整。 --javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

// xxx.ets
// 标记为入口组件
@Entry
// 声明为组件
@Component
struct GridExample {
  // 存储一组字符串数组作为状态变量
  @State numbers1: String[] = ['0', '1', '2', '3', '4'];
  // 存储另一组字符串数组作为状态变量
  @State numbers2: String[] = ['0', '1','2','3','4','5'];

  // 定义网格布局选项
  layoutOptions3: GridLayoutOptions = {
    regularSize: [1, 1],
    onGetRectByIndex: (index: number) => {
      if (index == 0)
        // 对于索引为 0 的元素,返回一个矩形区域 [x, y, width, height]
        return [0, 0, 1, 1];
      else if(index==1)
        return [0, 1, 2, 2];
      else if(index==2)
        return [0,3,3,3];
      else if(index==3)
        return [3, 0, 3, 3];
      else if(index==4)
        return [4, 3, 2, 2];
      else
        return [5, 5, 1, 1];
    }
  };

  build() {
    // 创建一个列组件,子元素之间间隔为 5
    Column({ space: 5 }) {
      // 创建第一个网格组件
      Grid() {
        // 嵌套的 ForEach 循环,遍历 numbers1 数组两次
        ForEach(this.numbers1, (day: string) => {
          ForEach(this.numbers1, (day: string) => {
            // 创建网格项
            GridItem() {
              // 创建文本组件,显示元素内容
              Text(day)
               .fontSize(16)
               .backgroundColor(0xF9CF93)
               .width('100%')
               .height('100%')
               .textAlign(TextAlign.Center);
            }
          }, (day: string) => day);
        }, (day: string) => day);
      }
      // 定义网格的列模板,包含 5 个相等的列,使用 1fr 单位
   .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
      // 定义网格的行模板,包含 5 个相等的行,使用 1fr 单位
   .rowsTemplate('1fr 1fr 1fr 1fr 1fr')
      // 列之间的间隔为 10
   .columnsGap(10)
      // 行之间的间隔为 10
   .rowsGap(10)
      // 网格的宽度为 90%
   .width('90%')
      // 网格的背景颜色
   .backgroundColor(0xFAEEE0)
      // 网格的高度为 300
   .height(300);

      // 显示一段文本说明
      Text('GridLayoutOptions的使用:onGetRectByIndex。').fontColor(0xCCCCCC).fontSize(9).width('90%');

      // 创建第二个网格组件,使用自定义的布局选项
      Grid(undefined, this.layoutOptions3) {
        // 遍历 numbers2 数组
        ForEach(this.numbers2, (day: string) => {
          // 创建网格项
          GridItem() {
            // 创建文本组件,显示元素内容
            Text(day)
             .fontSize(16)
             .backgroundColor(0xF9CF93)
             .width('100%')
             .height("100%")
             .textAlign(TextAlign.Center);
          }
         .height("100%")
         .width('100%');
        }, (day: string) => day);
      }
      // 定义网格的列模板,包含 6 个相等的列,使用 1fr 单位
   .columnsTemplate('1fr 1fr 1fr 1fr 1fr 1fr')
      // 定义网格的行模板,包含 6 个相等的行,使用 1fr 单位
   .rowsTemplate('1fr 1fr 1fr 1fr 1fr 1fr')
      // 列之间的间隔为 10
   .columnsGap(10)
      // 行之间的间隔为 10
   .rowsGap(10)
      // 网格的宽度为 90%
   .width('90%')
      // 网格的背景颜色
   .backgroundColor(0xFAEEE0)
      // 网格的高度为 300
   .height(300);
    }
    // 列组件的宽度为 100%,顶部外边距为 5
 .width('100%').margin({ top: 5 });
  }
}

PS:实际项目中如有出入,请告知博主,博主会第一时间修改得哇~