HarmonyOS服務(wù)卡片-運(yùn)動(dòng)飲食健康卡片
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
引言
隨著現(xiàn)代人生活節(jié)奏的加快,生活水平的不斷提高,健康成為了眼下人們?cè)絹碓疥P(guān)心的話題,尤其對(duì)于上班族,熬夜加班,晚睡早起,飲食不規(guī)律,缺乏鍛煉,使得身體出現(xiàn)一定的亞健康問題。隨著科技的發(fā)展,只有通過科學(xué)的方法了解身體的指標(biāo),給出合理的飲食,睡眠,運(yùn)動(dòng)等等建議,才能針對(duì)性的改善自身的健康問題,讓我們每一個(gè)人回歸健康,快樂的生活。
開發(fā)背景
人們對(duì)健康的要求越來越高,從單純的健康飲食到健康運(yùn)動(dòng),再到兩者的結(jié)合。但是,飲食和運(yùn)動(dòng)之間的平衡一般人很難掌握,而我們這款A(yù)PP將飲食、運(yùn)動(dòng)、以及自身身體狀況(如體脂、體重、內(nèi)脂等)有機(jī)結(jié)合起來。以體魄為根本,運(yùn)動(dòng)為支撐點(diǎn),飲食為輔助,為每個(gè)人量身打造健康體魄,為實(shí)現(xiàn)健康中國努力。
需求分析
目前年輕人工作壓力大,飲食基本靠外賣,鍛煉就去健身房,無法將飲食和健身相結(jié)合,本APP旨在為每一位用戶打造個(gè)性化的運(yùn)動(dòng)飲食計(jì)劃。其功能主要分為兩類:運(yùn)動(dòng)(包括如何運(yùn)動(dòng)、需要多大運(yùn)動(dòng)量)與飲食(早中晚餐吃什么,怎么制作等)。
主要功能介紹
健康+服務(wù)卡片主要包含三部分功能:
1、服務(wù)卡片(2*2)展示體脂儀主要測量數(shù)據(jù)(體重、身體年齡、BMI值);

點(diǎn)擊該卡片,可以進(jìn)入APP主頁,查看更多指標(biāo)數(shù)據(jù)。

2、服務(wù)卡片(4*4)展示體脂儀其他更為精準(zhǔn)化的測量數(shù)據(jù),并根據(jù)這些數(shù)據(jù)給出科學(xué)的飲食推薦;

點(diǎn)擊“早餐推薦”或午餐推薦,可以跳轉(zhuǎn)至推薦的飲食頁面。

3、服務(wù)卡片(2*4)根據(jù)體脂儀測量的各項(xiàng)數(shù)據(jù),給出合理化的,精準(zhǔn)化的訓(xùn)練方案。

點(diǎn)擊卡片右側(cè)推薦的健身項(xiàng)目,進(jìn)入對(duì)應(yīng)的訓(xùn)練項(xiàng)目詳解。

關(guān)鍵技術(shù)細(xì)節(jié)實(shí)現(xiàn)
一、創(chuàng)建“健康+”app工程
1、安裝和配置DevEco Studio 2.1 Release
2、創(chuàng)建項(xiàng)目
1)打開DevEco Studio,F(xiàn)ile→New→New Project;

2)Choose your ability template,選擇Empty Ability(Java),然后Next;

3)Configure your project,下列紅色框中都是要填寫或者選擇的,其中Project Name,Package Name,Save Location可以自定義;Project Type注意選擇Application;Compatible API Version注意選擇最新SDK版本:SDK API Version 5;Device Type選擇你使用的設(shè)備,我這里選擇Phone。最后點(diǎn)擊Finish,項(xiàng)目創(chuàng)建完成。

二、健康與飲食app服務(wù)卡片實(shí)現(xiàn)
第一步:卡片生成
1)在項(xiàng)目包名上右擊,選擇New→Service Widget

2)Choose a template for your service widget,選擇Base的服務(wù)卡片,然后在Template下任意選擇一種模版,點(diǎn)擊Next

3)Configure Your Service Widget,其中Service Widget Name, Description可以自定義;Select Ability/New Ability使用默認(rèn)的MainAbility; Type可以選擇java或者js開發(fā);SupportDimensions選擇卡片樣式(2*2、2*4以及4*4);點(diǎn)擊Finish,完成服務(wù)卡片創(chuàng)建。

第二步:卡片布局的修改:
2*2服務(wù)卡片的布局

2*4服務(wù)卡片的布局

4*4服務(wù)卡片的布局

第三步:卡片信息創(chuàng)建、更新、刪除


第四步、卡片在桌面的創(chuàng)建方式
長按app圖標(biāo),彈出如下彈框

選擇服務(wù)卡片,出現(xiàn)如下選擇畫面



選擇添加到桌面,則桌面會(huì)出現(xiàn)對(duì)應(yīng)的服務(wù)卡片



第五步:卡片的點(diǎn)擊跳轉(zhuǎn)實(shí)現(xiàn)


重難點(diǎn)解析
點(diǎn)擊卡片中某個(gè)控件,跳轉(zhuǎn)至指定頁面
1)在MainAbility的創(chuàng)建卡片onCreateForm(Intent intent)方法中創(chuàng)建ComponentProvider對(duì)象
- ComponentProvider componentProvider=new ComponentProvider();
2)然后調(diào)用componentProvider.setIntentAgent(int viewId,IntentAgent intent)
其中第一個(gè)參數(shù)為控件ID,第二個(gè)參數(shù)為跳轉(zhuǎn)指定頁面?zhèn)魅氲膇ntent;
3)componentProvider.setIntentAgent(ResourceTable.Id_img_base2_4, startAbilityIntentAgent(ABILITY_NAME));
4)最后providerFormInfo.mergeActions(componentProvider);
5)startAbilityIntentAgent(ABILITY_NAME)參數(shù)為初入的ability名,字符串類型。
- private IntentAgent startAbilityIntentAgent(String abilityName) {
- Intent intent = new Intent();
- Operation operation = new Intent.OperationBuilder()
- .withDeviceId("")
- .withBundleName("com.zel.health")
- .withAbilityName(abilityName)
- .build();
- intent.setOperation(operation);
- List intentList = new ArrayList<>();
- intentList.add(intent);
- List flags = new ArrayList<>();
- flags.add(Flags.UPDATE_PRESENT_FLAG);
- IntentAgentInfo paramsInfo = new IntentAgentInfo(200, IntentAgentConstant.OperationType.START_ABILITY, flags, intentList, null);
- IntentAgent intentAgent = IntentAgentHelper.getIntentAgent(this, paramsInfo);
- return intentAgent;
- }
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)