色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發實戰-OpenHarmony之天氣應用

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-24 18:12 ? 次閱讀

“天氣之子”

功能描述:

通過請求免費API獲取指定城市七天內相關天氣信息

開發環境:

IDE:DEV ECO 4.0.600

SDK:4.0.10.15

開發板:DAYU200 4.0.10.16

開發過程

一. 創建項目,調試環境

1.創建項目

#星計劃#OpenHarmony開發天氣查詢應用_OpenHarmony

2.選擇OpenHarmony、API10

#星計劃#OpenHarmony開發天氣查詢應用_OpenHarmony_02

3.連網條件下加載依賴

#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_03

4.在開發板上簽名,運行HelloWorld測試環境

直接運行,然后點擊log報錯直達簽名

在工具欄File/Project Structure/Signing Configs,勾選Automatically generate簽名;運行HelloWorld。

二.修改圖標和名稱

1.設置-應用管理頁面

AppScope/app.json5中查看相關配置

2.桌面

src/main/module.json5中查看相關配置

最終效果:

#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_04

#星計劃#OpenHarmony開發天氣查詢應用_OpenHarmony_05

三.添加網絡權限

因為需要用到網絡數據,所以添加initent權限。

在src/main/module.json5的model中添加配置。

"requestPermissions": [{
      "name": "ohos.permission.INTERNET"
    }],

四.自定義Model

在ets中新建model文件夾,建立ArkTS文件,基于API返回結果結合需要自定義類
API返回結果:
#星計劃#OpenHarmony開發天氣查詢應用_OpenHarmony_06

源碼如下

export class Item{
  name:string = "紫外線強度指數"
  level:string = "中等"
  // code:string = "uv"
}

export class Result1{//每1天
  city:string = '徐州'
  date:Date = new Date
  temp_day:number = 4
  temp_night:number = -1
  wea_day:string = "晴"
  wea_night:string = '晴'
  wind_day:string = "南風"
  wind_night:string = "南風"
  wind_day_level:string = "< 3級"
  wind_night_level:string = "< 3級"
  air_level:string = "輕度"
  sunrise:string = "07:17"
  sunset:string = "17:19"
  index:Array< Item > = []//建議
}

export class Result0{
  code:number = 200
  msg:string = 'success'
  data:Array< Result1 > = []//7天
}

五.制作index頁面、請求網絡數據

1.請求網絡數據

1.導入http模塊

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

2.創建createHttp

let httpRequest = http.createHttp();

3.填寫HTTP地址

httpRequest.request(// 填寫HTTP請求的URL地址,可以帶參數也可以不帶參數。URL地址需要開發者自定義。請求的參數可以在extraData中指定
      "https://v2.alapi.cn/api/tianqi/seven",
      {
        method: http.RequestMethod.GET, // 可選,默認為http.RequestMethod.GET
        // // 開發者根據自身業務需要添加header字段
        header: [{
          'Content-Type': 'application/json'
        }],
        // 當使用POST請求時此字段用于傳遞內容
        extraData: {
          "token": "自己的token",
          "type": "all",
          "format": "json"
        },
   
      }, (err: BusinessError, data: http.HttpResponse) = > {
 
    }
    );

4.對網絡數據的處理

if (!err) {
        let result:Result0 = JSON.parse(data.result.toString())
        if(result.code == 200){
          this.a = result.data
        }
        else {
          this.message = result.msg
        }
        httpRequest.destroy();
      } else {
        this.message = JSON.stringify(err)
        // console.error('error:' + JSON.stringify(err));
        // 當該請求使用完畢時,調用destroy方法主動銷毀
        httpRequest.destroy();
      }

完整代碼:

GetData(city:string) {
  // 3.每一個httpRequest對應一個HTTP請求任務,不可復用
  let httpRequest = http.createHttp();
  // 4.
  httpRequest.request(// 填寫HTTP請求的URL地址,可以帶參數也可以不帶參數。URL地址需要開發者自定義。請求的參數可以在extraData中指定
    "https://v2.alapi.cn/api/tianqi/seven",
    {
      method: http.RequestMethod.GET, // 可選,默認為http.RequestMethod.GET
      extraData: {
        "token": "自己的token",
        "city":city,
      },
    },
    (err: BusinessError, data: http.HttpResponse) = > {
      if (!err) {
        let result:Result0 = JSON.parse(data.result.toString())
        if(result.code == 200){
          this.a = result.data
        }
        else {
          this.message = result.msg
        }
        httpRequest.destroy();
      } else {
        this.message = JSON.stringify(err)
        // console.error('error:' + JSON.stringify(err));
        // 當該請求使用完畢時,調用destroy方法主動銷毀
        httpRequest.destroy();
      }
    }
  )
}

如果顯示2300006錯誤碼,很可能是網絡問題

2.制作UI

1.文本輸入框

TextInput({
      placeholder:"請輸入查詢城市名,如:徐州",
    }).onChange((item:string)= >{
      if(item!=null && item!=undefined){
        this.message = item
      }
    }).maxLength(8).type(InputType.Normal)

2.“查詢”按鈕:點擊頁面進行跳轉到列表頁

Button("查詢").onClick(()= >{
      this.GetData(this.message)
      //跳轉
      if(this.a!=null && this.a!=undefined && this.a.length >0){
        router.pushUrl({
          url:"pages/ListPage",
          params:this.a
        })
      }
      else{
        promptAction.showToast({message:"請重試~"})//數據請求失敗
      }
    }).backgroundColor(Color.Transparent).width("50%")

最終界面:
#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_07

六.制作列表頁(跳轉到的第二張頁面)

先看最終效果:
#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_08

1.自定義組件

#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_09

Component裝飾器修飾 ,定義struct,并且用關鍵字export導出

@Component
export struct ALine{//日期 天氣圖片 詳情跳轉
  @State date:Date = new Date
  @State wea:string = '晴'

  build(){
    Row(){
      Text(this.date.toString()).fontSize(25).fontWeight(FontWeight.Bold).margin({right:240}).fontColor(Color.White)

      Text("(白天)"+this.wea).fontColor(Color.White)

      Text("  >").fontWeight(FontWeight.Lighter).fontSize(30).fontColor(Color.White)
    }.width("100%").height("100%")
    .border({color:Color.Transparent}).borderRadius(14).borderWidth(3)
    .backgroundImage($r("app.media.LLBG")).backgroundImagePosition(Alignment.Center)
  }
}

2.頁面UI

1.首先接收上一頁面傳輸數據

@State a:Array< Result1 > = router.getParams() as Array< Result1 >

2.主要用到List,Column,Row,Text和自定義組件;利用ForEach循環渲染;每一個自定義組件綁定一個點擊事件,可分別跳轉到詳情頁。

源碼:

Column({space:5}){
      Text(this.a[0].city).fontSize(50).fontColor(Color.White)

      List({space:20}){
        ForEach(this.a,(item:Result1)= >{
          ListItem(){
            ALine({date:item.date,wea:item.wea_day})
              .onClick(()= >{//
                router.pushUrl({
                  url:"pages/DetailPage",
                  params:item
                })
              })
          }.height("20%").width("100%")
        })
      }.width("100%").height("100%").scrollBar(BarState.Off)
    }.backgroundImage($r("app.media.LPBG")).backgroundImageSize(ImageSize.Cover)

七.制作詳情頁(點擊自定義組件跳轉到的第三張頁面)

有了前面兩張頁面的基礎,這一張可以較為順利完成,故不再贅述。

最終效果:
#星計劃#OpenHarmony開發天氣查詢應用_ArkUI_10

本文主要是對鴻蒙開發中的實戰講解,制作天氣應用原生開發。有關更多的實戰學習,可以往主頁閱讀更多;鴻蒙的技術分布內容有如下:

高清完整或者實戰文檔,可以找我保存

八.總結

此項目主要練習了:

  1. List,Column,Row,Text,Divider,Image,promptAction等組件及其屬性
  2. 網絡數據請求
  3. 頁面跳轉及傳輸數據
  4. 自定義組件
  5. 自定義類
  6. 做自己喜歡的UI

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1499

    瀏覽量

    61970
  • OpenHarmony
    +關注

    關注

    25

    文章

    3716

    瀏覽量

    16271
收藏 人收藏

    評論

    相關推薦

    鴻蒙原生開源庫ViewPool在OpenHarmony社區正式上線

    近日,由伙伴參與共建的鴻蒙原生開源庫“ViewPool”在OpenHarmony社區正式上線。這個開發庫是基于OpenHarmony技術孵化的成果,充分發揮了平臺的技術特性,同時融入了
    的頭像 發表于 12-20 14:44 ?163次閱讀

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示

    本文介紹開源鴻蒙OpenHarmony系統下,修改產品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新OpenHarmon
    的頭像 發表于 11-27 09:31 ?148次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板來演示

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新Open
    的頭像 發表于 11-18 19:03 ?312次閱讀
    如何在開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux模式?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板演示

    觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多
    的頭像 發表于 10-25 10:51 ?382次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

    鴻蒙Flutter實戰:07混合開發

    # 鴻蒙Flutter實戰:混合開發 鴻蒙Flutter混合開發主要有兩種形式。 ## 1.基于har 將flutter module
    發表于 10-23 16:00

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發

    4.1學習之旅了嗎?快來加入我們,一起探索鴻蒙4.1系統的無限魅力吧! 【北京迅為】OpenHarmony學習開發系列教程(第1期 北向基礎篇一) P0_先導課 P1_OpenHarmony
    發表于 07-23 10:44

    OpenHarmony實戰開發-如何實現窗口開發概述

    你們的 『點贊和評論』,才是我創造的動力。 關注小編,同時可以期待后續文章ing?,不定期分享原創知識。 更多鴻蒙最新技術知識點,請關注作者博客:鴻蒙實戰經驗分享:鴻蒙基礎入門
    發表于 05-06 14:29

    【開源鴻蒙】下載OpenHarmony 4.1 Release源代碼

    本文介紹了如何下載開源鴻蒙OpenHarmony)操作系統 4.1 Release版本的源代碼,該方法同樣可以用于下載OpenHarmony最新開發版本(master分支)或者4.0
    的頭像 發表于 04-27 23:16 ?908次閱讀
    【開源<b class='flag-5'>鴻蒙</b>】下載<b class='flag-5'>OpenHarmony</b> 4.1 Release源代碼

    鴻蒙OS南向開發實戰:【智能電子牌】

    本Demo是基于hi3516dv300開發板,使用開源鴻蒙OpenHarmony 開發的應用。通過該應用不僅可以查看時間、日期以及對應的室內外溫濕度、空氣質量等,還可以查看當日的行程,
    的頭像 發表于 04-09 15:24 ?775次閱讀
    <b class='flag-5'>鴻蒙</b>OS南向<b class='flag-5'>開發</b><b class='flag-5'>實戰</b>:【智能電子牌】

    鴻蒙實戰開發:【7日天氣預報】

    我想要實現的一個功能是,查詢當前城市的實時天氣
    的頭像 發表于 03-25 16:19 ?887次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>實戰</b><b class='flag-5'>開發</b>:【7日<b class='flag-5'>天氣</b>預報】

    鴻蒙OpenHarmony開發實戰:【MiniCanvas】

    基于OpenHarmony的Cavas組件封裝了一版極簡操作的MiniCanvas,屏蔽了原有Canvas內部復雜的調用流程,支持一個API就可以實現相應的繪制能力,該庫還在繼續完善中,也歡迎PR。
    的頭像 發表于 03-23 20:43 ?352次閱讀

    深圳市24年,實現鴻蒙原生應用數占全國總量10%以上

    、Harmony南向開發鴻蒙項目實戰等等)鴻蒙(Harmony NEXT)技術知識點 高清完整版與筆記請加→mau123789是衛呀 針對鴻蒙
    發表于 03-04 21:42

    鴻蒙實戰項目開發:【短信服務】

    OpenHarmony 多媒體技術、Napi組件、OpenHarmony內核、Harmony南向開發鴻蒙項目實戰等等)
    發表于 03-03 21:29

    鴻蒙這么大聲勢,為何遲遲看不見崗位?最新數據來了

    令頁,是v喔! 《鴻蒙 (OpenHarmony)開發學習視頻》 《鴻蒙 (OpenHarmony)
    發表于 02-29 20:53

    鴻蒙開發OpenHarmony組件復用案例

    ) } }, item => item) } } } 本文主要是對鴻蒙開發基礎當中的OpenHarmony技術組件復用示例, 更多鴻蒙開發
    發表于 01-15 17:37
    主站蜘蛛池模板: 沟沟人体一区二区| 国产AV精品一区二区三区漫画| 大伊人青草狠狠久久| 精品午夜久久影视| 色翁荡熄月月| 5566av资源| 亚洲欧美在无码片一区二区| 无码专区无码专区视频网网址| 91精品国产91热久久p| 国产精品视频成人| 人妻仑乱少妇88MAV| 69夫妻交友网| 禁漫H天堂免费A漫| 小莹的性荡生活40章| 草莓在线观看| 男人插女人逼逼| 中国人泡妞xxxxxxxx19| 国产麻豆剧果冻传媒免费网站| 欧洲最强rapper潮水喷视频| 中文字幕 人妻熟女| 久久99精国产一区二区三区四区 | 99热精品在线视频观看| 久久99热在线观看7| 亚洲欧美韩国综合色| 国产亚洲一区在线| 蜜桃狠狠色伊人亚洲综合网站| 亚洲最大日夜无码中文字幕| 果冻传媒在线播放| 午夜福利免费0948视频| 国产精品无需播放器| 午夜A级理论片左线播放| 国产盗摄一区二区| 少妇高潮惨叫久久久久久欧美| 大陆午夜伦理| 无码人妻精品一区二区蜜桃色 | 国产成人综合网在线观看| 麻豆AV蜜桃AV久久| 最近中文字幕MV高清在线| 两个人的视频免费| 99手机在线视频| 日本久久中文字幕|