HarmonyOS 與 ArkTS | ForEach 迴圈渲染 + List 實現滑動影片列表

JayHsu_蔚蓝审敛法發表於2024-03-17

HarmonyOS 與 ArkTS | ForEach 迴圈渲染 + List 實現滑動影片列表

本文為記錄,內容較簡單,無註釋。

實現效果:


程式碼:

import image from '@ohos.multimedia.image'
class Item{
  name: string
  classification: string
  image: ResourceStr

  constructor(name: string, classification: string, image: ResourceStr) {
    this.name = name
    this.classification = classification
    this.image = image
  }
}

@Entry
@Component
struct Index {
  count: number = 0
  private items: Array<Item> = [
    new Item('藥屋少女的呢喃', '日本動漫 懸疑 劇情', $rawfile('C1.jpg')),
    new Item('進擊的巨人最終季', '日本動漫 熱血 戰鬥 冒險', $rawfile('C2.jpg')),
    new Item('神兵小將', '國產動漫', $rawfile('C3.jpg')),
    new Item('甜心格格', '國產動漫 搞笑 劇情', $rawfile('C4.jpg')),
    new Item('洛克王國:聖龍的守護', '奇幻 冒險 國產動漫', $rawfile('C5.jpg')),
    //複製
    new Item('藥屋少女的呢喃', '日本動漫 懸疑 劇情', $rawfile('C1.jpg')),
    new Item('進擊的巨人最終季', '日本動漫 熱血 戰鬥 冒險', $rawfile('C2.jpg')),
    new Item('神兵小將', '國產動漫', $rawfile('C3.jpg')),
    new Item('甜心格格', '國產動漫 搞笑 劇情', $rawfile('C4.jpg')),
    new Item('洛克王國:聖龍的守護', '奇幻 冒險 國產動漫', $rawfile('C5.jpg')),
    new Item('藥屋少女的呢喃', '日本動漫 懸疑 劇情', $rawfile('C1.jpg')),
    new Item('進擊的巨人最終季', '日本動漫 熱血 戰鬥 冒險', $rawfile('C2.jpg')),
    new Item('神兵小將', '國產動漫', $rawfile('C3.jpg')),
    new Item('甜心格格', '國產動漫 搞笑 劇情', $rawfile('C4.jpg')),
    new Item('洛克王國:聖龍的守護', '奇幻 冒險 國產動漫', $rawfile('C5.jpg')),
    new Item('藥屋少女的呢喃', '日本動漫 懸疑 劇情', $rawfile('C1.jpg')),
    new Item('進擊的巨人最終季', '日本動漫 熱血 戰鬥 冒險', $rawfile('C2.jpg')),
    new Item('神兵小將', '國產動漫', $rawfile('C3.jpg')),
    new Item('甜心格格', '國產動漫 搞笑 劇情', $rawfile('C4.jpg')),
    new Item('洛克王國:聖龍的守護', '奇幻 冒險 國產動漫', $rawfile('C5.jpg'))
  ]

  build() {
    Column(){
      Row(){
        Text('影片列表')
          .fontSize('30')
          .margin({left: 20, top: 20, bottom: 20})
          .fontColor(Color.White)
      }
      .width('100%')
      .justifyContent(FlexAlign.Start)
      .alignItems(VerticalAlign.Top)
      .backgroundColor('#a61b29')
      List({space: 5}){
        ForEach(
          this.items,
          item => {
            ListItem(){
              Row(){
                Image(item.image)
                  .width('100')
                Column({space: 20}){
                  Text((++this.count).toString())
                    .fontColor(Color.Red)
                  Text(item.name)
                    .fontSize('20')
                    .fontWeight(FontWeight.Bold)
                    .fontColor(Color.White)
                  Text(item.classification)
                    .fontColor(Color.White)
                }
                .alignItems(HorizontalAlign.End)
              }
              .width('95%')
              .justifyContent(FlexAlign.SpaceBetween)
              .backgroundColor('#4f00cf')
              .margin({top: 10})
              .padding({left: 10,right: 30})
              .borderRadius('10')
            }
          }
        )
      }
      .width('100%')
      .layoutWeight(1)
      .alignListItem(ListItemAlign.Center)
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#f1f0ed')
  }
}

相關文章