自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS服務卡片—殘奧會卡片

開發(fā) 前端 OpenHarmony
本APP旨在為用戶打造一款能夠快速了解殘奧會動態(tài)和相關知識的應用,讓更多人關注到殘奧會,關注這群同樣為國家爭取榮譽的運動員們。

[[423875]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

引言

2021年7月23日,東京奧運會開幕,中國國歌響徹東京,最終拿下38枚金牌、88枚獎牌。

2021年8月24日,東京殘奧會開幕,中國殘疾運動員出征東京,精彩正在繼續(xù)…

需求分析

奧運會是國民最關注的體育賽事,無論是穩(wěn)扎穩(wěn)打的乒乓球,還是獨占鰲頭的跳水,我們對體育賽事和參賽選手都如數(shù)家珍,然而十幾天后的殘奧會卻鮮為人知。本APP旨在為用戶打造一款能夠快速了解殘奧會動態(tài)和相關知識的應用,讓更多人關注到殘奧會,關注這群同樣為國家爭取榮譽的運動員們。

主要功能介紹

長按殘奧會服務卡片應用,點擊服務卡片選項,即可顯示已開發(fā)的服務卡片。根據(jù)三種不同規(guī)格尺寸的服務卡片,可以分別查看殘奧會獎牌榜、殘奧會賽事、以及殘奧會的中國運動員信息。具體如下:

1、服務卡片(2×2)

2×2的卡片樣式為東京殘奧會會標,效果如下圖1所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖1 2×2卡片樣式

點擊該卡片即可跳轉(zhuǎn)至獎牌榜頁面,查看各國獎牌數(shù)量。如圖2所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖2 獎牌榜

2、服務卡片(2×4)

在2×4的卡片中,左邊對東京殘奧會吉祥物進行展示;右邊選取了四個東京殘奧會賽事圖片進行展示,效果如圖3所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖3 2×4卡片樣式

點擊卡片即可進入應用的主界面查看具體項目,主界面如圖4所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖4 主界面

點擊主界面中的任意一個賽事圖標即可進入賽事的詳情界面,如圖5所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖5 賽事項目簡介

3、服務卡片(4×4)

在4×4的卡片中,上方展示的是東京殘奧會吉祥物,下方展示的是我們選取的參加本次殘奧會的中國運動員圖片。點擊卡片即可進入主界面查看各位中國運動員的詳細信息。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖6 4×4卡片樣式

技術實現(xiàn)

一.創(chuàng)建工程

打開DevEco Studio,點擊File→New→New Project;選擇Empty Ability(Java);點擊”Next“按鈕;即可進入項目配置界面。在此界面中,Project Name項目名稱可自定義,此處命名為ParalympicGamesCard;Project Type項目類型選擇應用Application;Package Name包名會根據(jù)前面的信息自動生成;Save Location存儲路徑可自行設置;Compatible API Version可兼容的API版本此處選擇版本4;Device Type設備類型選擇Phone。在完成配置信息設置后,點擊”Finish“按鈕,即可成功創(chuàng)建項目。具體配置信息可參考圖7。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖7 配置項目

二.殘奧會服務卡片實現(xiàn)

1.卡片生成

1)在項目包名上點擊右鍵,選擇New→Service Widget。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖8 創(chuàng)建卡片

2)選擇服務卡片種類,用戶可以選擇Template下任意一種模板,選中后點擊Next。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖9 選擇模板

3)配置服務卡片信息。其中Service Widget Name卡片名稱可以自定義;Description詳細信息用戶也可以自定義;Ability默認會使用MainAbility;Type類型可以根據(jù)實際開發(fā)情況選擇JAVA或者JS語言;Support Dimensions支持的樣式可以勾選后兩個,這樣就可以得到22、24、4*4三種尺寸的服務卡片。點擊”Finish“按鈕即可完成服務卡片的創(chuàng)建。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖10 配置服務卡片

2.卡片布局

本APP中三種卡片的布局分別在下圖紅框的xml文件中進行配置,文件名的尾數(shù)如”2_2“表示的是2*2服務卡片的布局文件,其余兩個尾數(shù)分別為”2_4“和”4_4“的xml文件同理。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖11 xml文件

下面以2*2服務卡片為例講解布局的實現(xiàn)。界面包含一張Image圖片和一個Text文本框,將Text的文字設置為“殘奧會獎牌榜”,并通過height、width、margin等設置兩個控件的高度、寬度、間隔等屬性。

  1. <DependentLayout 
  2.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  3.     ohos:height="match_parent" 
  4.     ohos:width="match_parent" 
  5.     ohos:id="$+id:layout_2x2" 
  6.     ohos:background_element="#FFFFFF" 
  7.     ohos:remote="true"
  8.    <Image//用于顯示殘奧會logo 
  9.        ohos:height="100vp" 
  10.        ohos:width="100vp" 
  11.        ohos:image_src="$media:aoyunhui" 
  12.        ohos:horizontal_center="true" 
  13.        ohos:scale_mode="zoom_start" 
  14.        ohos:start_margin="12vp" 
  15.        ohos:top_margin="25vp"/> 
  16.    <DirectionalLayout 
  17.        ohos:height="match_content" 
  18.        ohos:width="match_parent" 
  19.        ohos:align_parent_bottom="true" 
  20.        ohos:bottom_margin="15vp" 
  21.        ohos:end_margin="15vp" 
  22.        ohos:orientation="vertical" 
  23.        ohos:start_margin="12vp"
  24.       <Text//用于顯示提示性文字 
  25.            ohos:id="$+id:title" 
  26.            ohos:height="match_content" 
  27.            ohos:width="match_parent" 
  28.            ohos:text="殘奧會獎牌榜" 
  29.            ohos:text_color="#130c0e" 
  30.            ohos:text_size="20fp" 
  31.            ohos:text_weight="500" 
  32.            ohos:top_margin="0vp" 
  33.            ohos:truncation_mode="ellipsis_at_end"/> 
  34.     </DirectionalLayout> 
  35. </DependentLayout> 

3.卡片信息創(chuàng)建、更新、刪除

對卡片進行操作時,需要對創(chuàng)建的卡片信息進行持久化操作,以便再次獲取或更新卡片實例時能夠直接使用,即需要存儲卡片信息。主要采用對象關系型數(shù)據(jù)庫來實現(xiàn),需要重寫如下幾個函數(shù):表示創(chuàng)建卡片的回調(diào)函數(shù)onCreateForm()、表示更新卡片信息的onUpdataForm()、以及表示銷毀卡片和刪除卡片信息onDeleteForm()??ㄆ枰拇鎯π畔ǎ嚎ㄆ琁D、卡片名稱、卡片尺寸大小(22、24、4*4),這些回調(diào)函數(shù)在創(chuàng)建服務卡片時即可自動生成。回調(diào)函數(shù)代碼如下:

  1. //創(chuàng)建卡片 
  2. @Override 
  3. protected ProviderFormInfo onCreateForm(Intent intent) { 
  4.     HiLog.info(TAG, "onCreateForm"); 
  5.     long formId = intent.getLongParam(AbilitySlice.PARAM_FORM_IDENTITY_KEY, INVALID_FORM_ID); 
  6.     String formName = intent.getStringParam(AbilitySlice.PARAM_FORM_NAME_KEY); 
  7.     int dimension = intent.getIntParam(AbilitySlice.PARAM_FORM_DIMENSION_KEY, DEFAULT_DIMENSION_2X2); 
  8.     HiLog.info(TAG, "onCreateForm: formId=" + formId + ",formName=" + formName); 
  9.     FormControllerManager formControllerManager = FormControllerManager.getInstance(this); 
  10.     FormController formController = formControllerManager.getController(formId); 
  11.     formController = (formController == null) ? formControllerManager.createFormController(formId, 
  12.             formName, dimension) : formController; 
  13.     if (formController == null) { 
  14.         HiLog.error(TAG, "Get null controller. formId: " + formId + ", formName: " + formName); 
  15.         return null
  16.     } 
  17.     return formController.bindFormData(); 
  18.  
  19. //更新卡片 
  20. @Override 
  21. protected void onUpdateForm(long formId) { 
  22.     HiLog.info(TAG, "onUpdateForm"); 
  23.     super.onUpdateForm(formId); 
  24.     FormControllerManager formControllerManager = FormControllerManager.getInstance(this); 
  25.     FormController formController = formControllerManager.getController(formId); 
  26.     formController.updateFormData(formId); 
  27.  
  28. //刪除卡片 
  29. @Override 
  30. protected void onDeleteForm(long formId) { 
  31.     HiLog.info(TAG, "onDeleteForm: formId=" + formId); 
  32.     super.onDeleteForm(formId); 
  33.     FormControllerManager formControllerManager = FormControllerManager.getInstance(this); 
  34.     formControllerManager.deleteFormController(formId); 

4.將卡片在桌面上創(chuàng)建快捷方式

下面我們講解如何在桌面上創(chuàng)建三種不同尺寸卡片的快捷方式。

第一步:長按APP圖標,點擊服務卡片。如圖12所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖12 點擊服務卡片

第二步:用戶將喜愛的卡片選擇“添加到桌面”,如圖13所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖13 添加到桌面

第三步:用戶選擇喜歡的卡片添加到桌面上,則桌面會出現(xiàn)對應的服務卡片。如圖14所示:

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖14 添加桌面效果

5.卡片的點擊跳轉(zhuǎn)

點擊 22服務卡片后默認跳轉(zhuǎn)至獎牌榜顯示頁面,24服務卡片默認跳轉(zhuǎn)至主界面,再點擊主界面的各賽事圖標按鈕進入賽事項目詳情頁面。下面詳細介紹一下如何實現(xiàn)上述提到的頁面跳轉(zhuǎn)功能。

1)AoyunhuiwidgetImpl文件設置

在widght文件下的AoyunhuiwidgetImpl卡片設置文件中,需要重寫bindFormData()方法。通過switch…case…方式控制跳轉(zhuǎn)的具體指向,當卡片尺寸為22時,跳轉(zhuǎn)指向的Ability名稱為MainAbility2;當卡片尺寸為24時,跳轉(zhuǎn)指向的Ability名稱為MainAbility。

HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖15AoyunhuiwidgetImpl文件位置

  1. @Override 
  2. public ProviderFormInfo bindFormData() { 
  3.     ...... 
  4.     switch (dimension){//用于控制跳轉(zhuǎn)的具體指向 
  5.         case DEFAULT_DIMENSION_2X2: 
  6.             abilityName= "MainAbility2";//跳轉(zhuǎn)指向頁面的Ability名稱 
  7.             componentProvider=new ComponentProvider();//2*2尺寸 
  8.     componentProvider.setIntentAgent(ResourceTable.Id_layout_2x2,startAbilityIntentAgent(abilityName)); 
  9.             break; 
  10.         case DIMENSION_2X4: 
  11.             abilityName="MainAbility";//跳轉(zhuǎn)指向頁面的Ability名稱 
  12.             componentProvider=new ComponentProvider();//2*4尺寸   componentProvider.setIntentAgent(ResourceTable.Id_layout_2x4,startAbilityIntentAgent(abilityName)); 
  13.     break; 
  14.     } 

2)MainAbility2Slice文件設置

在MainAbility2Slice文件中,調(diào)用webview()方法,將url地址作為入?yún)魅敕椒ㄖ?,完成設置需要跳轉(zhuǎn)的獎牌榜網(wǎng)頁url地址,實現(xiàn)點擊2*2卡片后跳轉(zhuǎn)至獎牌榜顯示頁面的效果。

  1. public void onStart(Intent intent) { 
  2.     ... 
  3. super.setUIContent(ResourceTable.Layout_ability_main2); 
  4.     String url="https://www.baidu.com/s?ie=utf-8&fr=bks0000&wd=%E5%A5%A5%E8%BF%90%E4%BC%9A%E5%A5%96%E7%89%8C%E6%A6%9C";//跳轉(zhuǎn)至獎牌榜 
  5.     ... 
  6.     webview(url); 

3)MainAbilitySlice文件設置

第一步:主界面布局

APP的主界面布局定義在ability_main.xml文件中,界面包含7個Image圖片和6個Text文本框。其中,7個Image圖片包括一個首頁裝飾圖和六個賽事項目圖標;6個Text文本框用于顯示賽事項目的名稱。在設置好各控件的相關屬性之后,通過setUIContent()方法將ability_main.xml文件設置為APP的主界面布局。代碼如下,布局效果可參考圖16。

  1. super.setUIContent(ResourceTable.Layout_ability_main); 
HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖16 主界面布局

第二步:主界面跳轉(zhuǎn)至賽事項目詳情界面

在MainAbilitySlice文件的onStart()方法中,通過findComponentById()的方法,實現(xiàn)上面1)AoyunhuiwidgetImpl文件設置小節(jié)中提到的賽事項目的定位。以舉重項目為例,在主界面中,獲取“舉重”項目的圖片控件,并為其設置onClick()點擊跳轉(zhuǎn)事件,將跳轉(zhuǎn)指向的Ability名稱withAbilityName()設置為舉重頁面的Ability,即WeightliftingAbility,實現(xiàn)點擊舉重圖片后跳轉(zhuǎn)至舉重項目詳情頁面的效果,具體代碼如下:

  1. public void onStart(Intent intent) { 
  2.     ... 
  3.     findComponentById(ResourceTable.Id_juzhong).setClickedListener(new Component.ClickedListener() {//獲取舉重項目的圖片控件 
  4.         @Override 
  5.         public void onClick(Component component) {//為舉重圖片設置點擊事件 
  6.             Intent secondIntent = new Intent(); 
  7.             secondIntent.setOperation(new Intent.OperationBuilder() 
  8.                     .withBundleName("com.huawei.ParalympicGamesCard"
  9.                     .withAbilityName("com.huawei.ParalympicGamesCard.WeightliftingAbility")//將跳轉(zhuǎn)指向的Ability名稱設置為舉重的Ability 
  10.                     .build()); 
  11.             startAbility(secondIntent); 
  12.         } 
  13.     }); 

第三步:舉重項目詳情界面WeightliftingAbilitySlice

WeightliftingAbilitySlice舉重項目詳情界面實現(xiàn)原理和第一步主界面實現(xiàn)原理相似。在ability_weightlifting.xml文件中界面包含Image圖片和Text文本框控件,其中圖片用來存放舉重比賽照片,Text文字用來存放舉重項目的文字介紹。在完成設置各控件屬性后,通過setUIContent()方法將ability_weightlifting.xml文件設置為舉重項目詳情界面布局。舉重項目詳情界面效果可參考圖17。

  1. super.setUIContent(ResourceTable.Layout_ability_weightlifting); 
HarmonyOS服務卡片——殘奧會卡片-鴻蒙HarmonyOS技術社區(qū)

圖17 舉重項目詳情界面

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2021-07-22 08:45:47

鴻蒙HarmonyOS應用

2022-05-09 11:52:38

Java卡片服務卡片

2023-11-16 09:47:55

ArkTS鴻蒙

2021-07-20 09:58:16

鴻蒙HarmonyOS應用

2021-08-18 10:06:33

鴻蒙HarmonyOS應用

2022-04-24 15:26:38

服務卡鴻蒙

2021-08-23 10:12:41

鴻蒙HarmonyOS應用

2021-07-28 14:59:08

鴻蒙HarmonyOS應用

2023-09-18 15:12:47

服務卡片ArkTS

2023-06-20 15:45:15

服務卡片鴻蒙

2021-09-18 09:57:20

鴻蒙HarmonyOS應用

2021-06-21 15:21:52

鴻蒙HarmonyOS應用開發(fā)

2021-09-09 15:07:36

鴻蒙HarmonyOS應用

2021-08-23 11:03:54

鴻蒙HarmonyOS應用

2021-08-20 14:23:14

鴻蒙HarmonyOS應用

2023-08-04 17:24:43

2023-04-07 09:20:55

2023-09-13 15:27:14

鴻蒙應用元服務
點贊
收藏

51CTO技術棧公眾號