女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開(kāi)發(fā)實(shí)例:【瀑布流式圖片瀏覽】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-29 17:38 ? 次閱讀

介紹

瀑布流式展示圖片文字,在當(dāng)前產(chǎn)品設(shè)計(jì)中已非常常見(jiàn),本篇將介紹關(guān)于WaterFlow的圖片瀏覽場(chǎng)景,順便集成Video控件,以提高實(shí)踐的趣味性

準(zhǔn)備

  1. 請(qǐng)參照[官方指導(dǎo)],創(chuàng)建一個(gè)Demo工程,選擇Stage模型
  2. 熟讀HarmonyOS 官方指導(dǎo)“[https://gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md”]

搜狗高速瀏覽器截圖20240326151547.png

效果

豎屏

image.png

橫屏

數(shù)據(jù)源

功能介紹

  1. 瀑布流式圖片展示
  2. 橫豎屏圖片/視頻展示

核心代碼

布局

整體結(jié)構(gòu)為:瀑布流 + 加載進(jìn)度條

每條數(shù)據(jù)結(jié)構(gòu): 圖片 + 文字 【由于沒(méi)有設(shè)定圖片寬高比,因此通過(guò)文字長(zhǎng)度來(lái)自然生成瀑布流效果】

由于有點(diǎn)數(shù)據(jù)量,按照官方指導(dǎo),采用LazyForEach懶加載方式

Stack() {
  WaterFlow({ scroller: this.scroller }) {
    LazyForEach(dataSource, item = > {
      FlowItem() {
        Column({ space: 10 }) {
          Image(item.coverUrl).objectFit(ImageFit.Cover)
            .width('100%')
            .height(this.imageHeight)
          Text(item.title)
            .fontSize(px2fp(50))
            .fontColor(Color.Black)
            .width('100%')
        }.onClick(() = > {
          router.pushUrl({ url: 'custompages/waterflow/Detail', params: item })
        })
      }
    }, item = > item)
  }
  .columnsTemplate(this.columnsTemplate)
  .columnsGap(5)
  .rowsGap(5)
  .onReachStart(() = > {
    console.info("onReachStart")
  })
  .onReachEnd(() = > {
    console.info("onReachEnd")

    if (!this.running) {
      if ((this.pageNo + 1) * 15 < this.total) {
        this.pageNo++
        this.running = true

        setTimeout(() = > {
          this.requestData()
        }, 2000)
      }
    }

  })
  .width('100%')
  .height('100%')
  .layoutDirection(FlexDirection.Column)

  if (this.running) {
     this.loadDataFooter()
  }

}
復(fù)制

橫豎屏感知

橫豎屏感知整體有兩個(gè)場(chǎng)景:1. 當(dāng)前頁(yè)面發(fā)生變化 2.初次進(jìn)入頁(yè)面
這里介紹幾種監(jiān)聽(tīng)方式:

當(dāng)前頁(yè)面監(jiān)聽(tīng)

import mediaquery from '@ohos.mediaquery';

//這里你也可以使用"orientation: portrait" 參數(shù)
listener = mediaquery.matchMediaSync('(orientation: landscape)');
this.listener.on('change', 回調(diào)方法)
復(fù)制

外部傳參

通過(guò)UIAbility, 一直傳到Page文件

事件傳遞

采用EeventHub機(jī)制,在UIAbility把橫豎屏切換事件發(fā)出來(lái),Page文件注冊(cè)監(jiān)聽(tīng)事件

this.context.eventHub.on('onConfigurationUpdate', (data) = > {
  console.log(JSON.stringify(data))
  let config = data as Configuration
  this.screenDirection = config.direction
  this.configureParamsByScreenDirection()
});
復(fù)制

API數(shù)據(jù)請(qǐng)求

這里需要設(shè)置Android 或者 iOS 特征UA

requestData() {
  let url = `https://api.apiopen.top/api/getHaoKanVideo?page=${this.pageNo}&size=15`
  let httpRequest = http.createHttp()
  httpRequest.request(
    url,
    {
      header: {
        "User-Agent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36"
      }
    }).then((value: http.HttpResponse) = > {

    if (value.responseCode == 200) {

      let searchResult: SearchResult = JSON.parse(value.result as string)

      if (searchResult) {
        this.total = searchResult.result.total

        searchResult.result.list.forEach(ItemModel = > {
          dataSource.addData(ItemModel)
        })
      }
    } else {
      console.error(JSON.stringify(value))
    }

  }).catch(e = > {

    Logger.d(JSON.stringify(e))

    promptAction.showToast({
      message: '網(wǎng)絡(luò)異常: ' + JSON.stringify(e),
      duration: 2000
    })

  }).finally(() = > {
    this.running = false
  })

}
復(fù)制

橫豎屏布局調(diào)整

因?yàn)橐m應(yīng)橫豎屏,所以需要在原有布局的基礎(chǔ)上做一點(diǎn)改造, 讓瀑布流的列參數(shù)改造為@State 變量 , 讓圖片高度的參數(shù)改造為@State 變量

WaterFlow({ scroller: this.scroller }) {
  LazyForEach(dataSource, item = > {
    FlowItem() {
      Column({ space: 10 }) {
        Image(item.coverUrl).objectFit(ImageFit.Cover)
          .width('100%')
          .height(this.imageHeight)
        Text(item.title)
          .fontSize(px2fp(50))
          .fontColor(Color.Black)
          .width('100%')
      }.onClick(() = > {
        router.pushUrl({ url: 'custompages/waterflow/Detail', params: item })
      })
    }
  }, item = > item)
}
.columnsTemplate(this.columnsTemplate)
復(fù)制

瀑布流完整代碼

API返回的數(shù)據(jù)結(jié)構(gòu)

import { ItemModel } from './ItemModel'

export default class SearchResult{
  public code: number
  public message: string
  public result: childResult
}

class childResult {
  public total: number
  public list: ItemModel[]
};
復(fù)制

Item Model

export class ItemModel{
  public id: number
  public tilte: string
  public userName: string
  public userPic: string
  public coverUrl: string
  public playUrl: string
  public duration: string
}復(fù)制

WaterFlow數(shù)據(jù)源接口

import List from '@ohos.util.List';
import { ItemModel } from './ItemModel';

export class PicData implements IDataSource {

  private data: List< ItemModel > = new List< ItemModel >()

  addData(item: ItemModel){
    this.data.add(item)
  }

  unregisterDataChangeListener(listener: DataChangeListener): void {

  }

  registerDataChangeListener(listener: DataChangeListener): void {

  }

  getData(index: number): ItemModel {
     return this.data.get(index)
  }

  totalCount(): number {
    return this.data.length
  }


}復(fù)制

布局

import http from '@ohos.net.http';
import { CommonConstants } from '../../common/CommonConstants';
import Logger from '../../common/Logger';
import { PicData } from './PicData';
import SearchResult from './Result';
import promptAction from '@ohos.promptAction'
import router from '@ohos.router';
import common from '@ohos.app.ability.common';
import { Configuration } from '@ohos.app.ability.Configuration';
import mediaquery from '@ohos.mediaquery';

let dataSource = new PicData()

/**
 * 問(wèn)題: 橫豎屏切換,間距會(huì)發(fā)生偶發(fā)性變化
 * 解決方案:延遲300毫秒改變參數(shù)
 *
 */
@Entry
@Component
struct GridLayoutIndex {
  private context = getContext(this) as common.UIAbilityContext;
  @State pageNo: number = 0
  total: number = 0
  @State running: boolean = true
  @State screenDirection: number = this.context.config.direction
  @State columnsTemplate: string = '1fr 1fr'
  @State imageHeight: string = '20%'
  scroller: Scroller = new Scroller()

  // 當(dāng)設(shè)備橫屏?xí)r條件成立
  listener = mediaquery.matchMediaSync('(orientation: landscape)');

  onPortrait(mediaQueryResult) {
    if (mediaQueryResult.matches) {
      //橫屏
      this.screenDirection = 1
    } else {
      //豎屏
      this.screenDirection = 0
    }

    setTimeout(()= >{
      this.configureParamsByScreenDirection()
    }, 300)
  }

  onBackPress(){
    this.context.eventHub.off('onConfigurationUpdate')
  }

  aboutToAppear() {
    console.log('已進(jìn)入瀑布流頁(yè)面')

    console.log('當(dāng)前屏幕方向:' + this.context.config.direction)

    if (AppStorage.Get('screenDirection') != 'undefined') {
      this.screenDirection = AppStorage.Get(CommonConstants.ScreenDirection)
    }

    this.configureParamsByScreenDirection()

    this.eventHubFunc()

    let portraitFunc = this.onPortrait.bind(this)
    this.listener.on('change', portraitFunc)

    this.requestData()
  }

  @Builder loadDataFooter() {
    LoadingProgress()
      .width(px2vp(150))
      .height(px2vp(150))
      .color(Color.Orange)
  }

  build() {
    Stack() {
      WaterFlow({ scroller: this.scroller }) {
        LazyForEach(dataSource, item = > {
          FlowItem() {
            Column({ space: 10 }) {
              Image(item.coverUrl).objectFit(ImageFit.Cover)
                .width('100%')
                .height(this.imageHeight)
              Text(item.title)
                .fontSize(px2fp(50))
                .fontColor(Color.Black)
                .width('100%')
            }.onClick(() = > {
              router.pushUrl({ url: 'custompages/waterflow/Detail', params: item })
            })
          }
        }, item = > item)
      }
      .columnsTemplate(this.columnsTemplate)
      .columnsGap(5)
      .rowsGap(5)
      .onReachStart(() = > {
        console.info("onReachStart")
      })
      .onReachEnd(() = > {
        console.info("onReachEnd")

        if (!this.running) {
          if ((this.pageNo + 1) * 15 < this.total) {
            this.pageNo++
            this.running = true

            setTimeout(() = > {
              this.requestData()
            }, 2000)
          }
        }

      })
      .width('100%')
      .height('100%')
      .layoutDirection(FlexDirection.Column)

      if (this.running) {
         this.loadDataFooter()
      }

    }

  }

  requestData() {
    let url = `https://api.apiopen.top/api/getHaoKanVideo?page=${this.pageNo}&size=15`
    let httpRequest = http.createHttp()
    httpRequest.request(
      url,
      {
        header: {
          "User-Agent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36"
        }
      }).then((value: http.HttpResponse) = > {

      if (value.responseCode == 200) {

        let searchResult: SearchResult = JSON.parse(value.result as string)

        if (searchResult) {
          this.total = searchResult.result.total

          searchResult.result.list.forEach(ItemModel = > {
            dataSource.addData(ItemModel)
          })
        }
      } else {
        console.error(JSON.stringify(value))
      }

    }).catch(e = > {

      Logger.d(JSON.stringify(e))

      promptAction.showToast({
        message: '網(wǎng)絡(luò)異常: ' + JSON.stringify(e),
        duration: 2000
      })

    }).finally(() = > {
      this.running = false
    })

  }

  eventHubFunc() {
    this.context.eventHub.on('onConfigurationUpdate', (data) = > {
      console.log(JSON.stringify(data))
      // let config = data as Configuration
      // this.screenDirection = config.direction
      // this.configureParamsByScreenDirection()
    });
  }

  configureParamsByScreenDirection(){
    if (this.screenDirection == 0) {
      this.columnsTemplate = '1fr 1fr'
      this.imageHeight = '20%'
    } else {
      this.columnsTemplate = '1fr 1fr 1fr 1fr'
      this.imageHeight = '50%'
    }
  }

}

復(fù)制

圖片詳情頁(yè)

import { CommonConstants } from '../../common/CommonConstants';
import router from '@ohos.router';
import { ItemModel } from './ItemModel';
import common from '@ohos.app.ability.common';
import { Configuration } from '@ohos.app.ability.Configuration';

@Entry
@Component
struct DetailIndex{
  private context = getContext(this) as common.UIAbilityContext;

  extParams: ItemModel
  @State previewUri: Resource = $r('app.media.splash')
  @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
  @State isAutoPlay: boolean = false
  @State showControls: boolean = true
  controller: VideoController = new VideoController()

  @State screenDirection: number = 0
  @State videoWidth: string = '100%'
  @State videoHeight: string = '70%'

  @State tipWidth: string = '100%'
  @State tipHeight: string = '30%'

  @State componentDirection: number = FlexDirection.Column
  @State tipDirection: number = FlexDirection.Column

  aboutToAppear() {
    console.log('準(zhǔn)備加載數(shù)據(jù)')
    if(AppStorage.Get('screenDirection') != 'undefined'){
      this.screenDirection = AppStorage.Get(CommonConstants.ScreenDirection)
    }

    this.configureParamsByScreenDirection()

    this.extParams = router.getParams() as ItemModel
    this.eventHubFunc()
  }

  onBackPress(){
    this.context.eventHub.off('onConfigurationUpdate')
  }

  build() {
      Flex({direction: this.componentDirection}){
        Video({
          src: this.extParams.playUrl,
          previewUri: this.extParams.coverUrl,
          currentProgressRate: this.curRate,
          controller: this.controller,
        }).width(this.videoWidth).height(this.videoHeight)
          .autoPlay(this.isAutoPlay)
          .objectFit(ImageFit.Contain)
          .controls(this.showControls)
          .onStart(() = > {
            console.info('onStart')
          })
          .onPause(() = > {
            console.info('onPause')
          })
          .onFinish(() = > {
            console.info('onFinish')
          })
          .onError(() = > {
            console.info('onError')
          })
          .onPrepared((e) = > {
            console.info('onPrepared is ' + e.duration)
          })
          .onSeeking((e) = > {
            console.info('onSeeking is ' + e.time)
          })
          .onSeeked((e) = > {
            console.info('onSeeked is ' + e.time)
          })
          .onUpdate((e) = > {
            console.info('onUpdate is ' + e.time)
          })

        Flex({direction: this.tipDirection, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center, alignContent: FlexAlign.Center}){
          Row() {
            Button('src').onClick(() = > {
              // this.videoSrc = $rawfile('video2.mp4') // 切換視頻源
            }).margin(5)
            Button('previewUri').onClick(() = > {
              // this.previewUri = $r('app.media.poster2') // 切換視頻預(yù)覽海報(bào)
            }).margin(5)
            Button('controls').onClick(() = > {
              this.showControls = !this.showControls // 切換是否顯示視頻控制欄
            }).margin(5)
          }

          Row() {
            Button('start').onClick(() = > {
              this.controller.start() // 開(kāi)始播放
            }).margin(5)
            Button('pause').onClick(() = > {
              this.controller.pause() // 暫停播放
            }).margin(5)
            Button('stop').onClick(() = > {
              this.controller.stop() // 結(jié)束播放
            }).margin(5)
            Button('setTime').onClick(() = > {
              this.controller.setCurrentTime(10, SeekMode.Accurate) // 精準(zhǔn)跳轉(zhuǎn)到視頻的10s位置
            }).margin(5)
          }
          Row() {
            Button('rate 0.75').onClick(() = > {
              this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
            }).margin(5)
            Button('rate 1').onClick(() = > {
              this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
            }).margin(5)
            Button('rate 2').onClick(() = > {
              this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
            }).margin(5)
          }
        }
        .width(this.tipWidth).height(this.tipHeight)
      }

  }

  eventHubFunc() {
    this.context.eventHub.on('onConfigurationUpdate', (data) = > {
       console.log(JSON.stringify(data))
       let config = data as Configuration
       this.screenDirection = config.direction

       this.configureParamsByScreenDirection()

    });
  }


  configureParamsByScreenDirection(){
    if(this.screenDirection == 0){
      this.videoWidth = '100%'
      this.videoHeight = '70%'
      this.tipWidth = '100%'
      this.tipHeight = '30%'
      this.componentDirection = FlexDirection.Column

    } else {
      this.videoWidth = '60%'
      this.videoHeight = '100%'
      this.tipWidth = '40%'
      this.tipHeight = '100%'
      this.componentDirection = FlexDirection.Row

    }

  }

}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    59

    文章

    2531

    瀏覽量

    43788
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    2054

    瀏覽量

    32167
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    191

    瀏覽量

    4882
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙NEXT上傳圖片功能PhotoViewPicker核心功能解析

    # 鴻蒙NEXT上傳圖片功能PhotoViewPicker核心功能解析 #ArkTS#鴻蒙Next#HarmonyOS_SDK應(yīng)用服務(wù)#HarmonyOS 語(yǔ)言 `PhotoViewPicker
    發(fā)表于 06-06 15:00

    鴻蒙5開(kāi)發(fā)隱藏案例分享---自由流轉(zhuǎn)的瀏覽進(jìn)度接續(xù)

    **?**鴻蒙開(kāi)發(fā)隱藏案例大揭秘!手把手教你玩轉(zhuǎn)應(yīng)用接續(xù)功能? 大家好呀~今天要跟大家分享一個(gè)超實(shí)用的鴻蒙開(kāi)發(fā)技巧!之前總覺(jué)得鴻蒙的官方文檔
    發(fā)表于 06-03 18:47

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(游戲)

    ?【開(kāi)發(fā)者必看】鴻蒙隱藏寶箱大公開(kāi)!這些實(shí)戰(zhàn)案例讓你的開(kāi)發(fā)效率翻倍! 哈嘍各位開(kāi)發(fā)者小伙伴!今天要和大家分享一個(gè)讓我拍大腿的發(fā)現(xiàn)——原來(lái)鴻蒙
    發(fā)表于 06-03 18:22

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(地圖導(dǎo)航)

    案例!最近在肝鴻蒙項(xiàng)目時(shí)意外發(fā)現(xiàn)了這個(gè)地圖導(dǎo)航的\"一多\"開(kāi)發(fā)實(shí)例,簡(jiǎn)直像發(fā)現(xiàn)新大陸!這就帶大家沉浸式體驗(yàn)這個(gè)超實(shí)用的開(kāi)發(fā)模板~ ? 先劃重點(diǎn):這個(gè)案例完美演示了如何用一套代碼搞定
    發(fā)表于 06-03 16:17

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(旅行訂票)

    ? 鴻蒙開(kāi)發(fā)寶藏大發(fā)現(xiàn)!一多開(kāi)發(fā)實(shí)戰(zhàn)案例解析(旅行訂票篇) 大家好!今天在翻鴻蒙開(kāi)發(fā)者文檔時(shí),意外發(fā)現(xiàn)了官方藏著一整片\"案例綠洲\"!尤其
    發(fā)表于 06-03 16:16

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例圖片美化)

    ?【鴻蒙開(kāi)發(fā)寶藏案例分享】一次搞定多端適配的圖片美化應(yīng)用開(kāi)發(fā)思路!? Hey小伙伴們~ 今天在翻鴻蒙文檔時(shí)挖到一個(gè)超實(shí)用的大寶藏!原來(lái)官方早
    發(fā)表于 06-03 16:09

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(購(gòu)物比價(jià))

    鴻蒙開(kāi)發(fā)寶藏案例大公開(kāi)!】手把手教你用\"一多\"能力打造跨端購(gòu)物比價(jià)App 小伙伴們好呀!今天要和大家分享一個(gè)鴻蒙開(kāi)發(fā)的隱藏寶典——官方購(gòu)物比價(jià)應(yīng)用
    發(fā)表于 06-03 16:07

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(社區(qū)評(píng)論)

    應(yīng)用” 的一多開(kāi)發(fā)實(shí)例,看完直呼“原來(lái)還能這樣玩?!” ? 必須整理出來(lái)和大家嘮嘮,順便帶大家手把手拆解幾個(gè)核心案例! ?** 一多開(kāi)發(fā)是啥?一句話總結(jié):** 一次開(kāi)發(fā),自動(dòng)適配手機(jī)、
    發(fā)表于 06-03 16:03

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(短視頻)

    ?【干貨預(yù)警】今天在鴻蒙開(kāi)發(fā)者文檔里挖到寶了!原來(lái)官方早就藏了這么多\"一多開(kāi)發(fā)\"的實(shí)戰(zhàn)案例,難怪我之前的跨端適配總踩坑... 這就把最新發(fā)現(xiàn)的短視頻開(kāi)發(fā)秘籍整理分享給大家
    發(fā)表于 06-03 15:59

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(長(zhǎng)視頻)

    ;實(shí)例,看完直呼\"原來(lái)還能這樣玩!\" 今天咱們就來(lái)好好扒一扒這些隱藏的寶藏,附帶手把手的代碼解析! ?** 長(zhǎng)視頻應(yīng)用案例:一次開(kāi)發(fā)征服四類設(shè)備** 核心功能 :首頁(yè)瀑布
    發(fā)表于 06-03 15:58

    鴻蒙開(kāi)發(fā)實(shí)現(xiàn)圖片上傳(上傳用戶頭像)

    應(yīng)用場(chǎng)景: 選擇圖片 1.1. 添加圖片到相冊(cè)中 默認(rèn)的相冊(cè)中無(wú)法添加圖片:windows 模擬器可以通過(guò)截圖來(lái)添加圖片 1.2. 選擇相冊(cè)圖片
    發(fā)表于 05-24 23:09

    HarmonyOS 應(yīng)用開(kāi)發(fā)賦能套件:鴻蒙原生應(yīng)用開(kāi)發(fā)的 “神助攻”

    隨著鴻蒙生態(tài)的快速發(fā)展,越來(lái)越多的開(kāi)發(fā)者投身于鴻蒙原生應(yīng)用的開(kāi)發(fā)中。然而,在學(xué)習(xí)鴻蒙原生應(yīng)用開(kāi)發(fā)
    發(fā)表于 02-17 16:37

    鴻蒙機(jī)器人與鴻蒙開(kāi)發(fā)板聯(lián)動(dòng)演示

    鴻蒙機(jī)器人與鴻蒙開(kāi)發(fā)板聯(lián)動(dòng)演示,機(jī)器人的角色為迎賓機(jī)器人,開(kāi)發(fā)板負(fù)責(zé)人賓客出現(xiàn)監(jiān)聽(tīng)
    發(fā)表于 12-02 14:55

    華為發(fā)布鴻蒙原生智能,OS深度融合AI,小藝升級(jí)為系統(tǒng)級(jí)智能體

    6月21日,華為開(kāi)發(fā)者大會(huì)(HDC 2024)于東莞松山湖舉行,會(huì)上,華為發(fā)布鴻蒙原生智能(Harmony Intelligence),并宣布HarmonyOS NEXT面向開(kāi)發(fā)者和先鋒用戶開(kāi)放
    的頭像 發(fā)表于 06-24 14:30 ?1066次閱讀
    華為發(fā)布<b class='flag-5'>鴻蒙</b>原生智能,<b class='flag-5'>OS</b>深度融合AI,小藝升級(jí)為系統(tǒng)級(jí)智能體

    HDC2024華為發(fā)布鴻蒙原生智能:AI與OS深度融合,開(kāi)啟全新的AI時(shí)代

    6月21日,華為開(kāi)發(fā)者大會(huì)2024(HDC.2024)召開(kāi)。 HarmonyOS NEXT將AI與OS深度融合,構(gòu)筑全新鴻蒙原生智能框架。大會(huì)現(xiàn)場(chǎng),華為常務(wù)董事、終端BG董事長(zhǎng)、智能汽車(chē)解決方案BU
    的頭像 發(fā)表于 06-24 09:28 ?1092次閱讀
    HDC2024華為發(fā)布<b class='flag-5'>鴻蒙</b>原生智能:AI與<b class='flag-5'>OS</b>深度融合,開(kāi)啟全新的AI時(shí)代