chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何通過(guò)卡片進(jìn)行直達(dá)教育類專欄分類照片

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:梨園晶麗 ? 2021-06-30 09:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 前言

對(duì)于教育類應(yīng)用程序來(lái)說(shuō),一般都有課程分類,包括我們程序員學(xué)習(xí)技術(shù),也簡(jiǎn)單。簡(jiǎn)單的說(shuō),一個(gè)程序員社區(qū),必然有后期技術(shù)分類,比如有的學(xué)習(xí)Python,有的學(xué)習(xí)Java鴻蒙技術(shù),有的對(duì)OpenCV動(dòng)物。+

而教育類應(yīng)用程序,如果能夠通過(guò)鴻蒙的非標(biāo)準(zhǔn)功能,將課程選擇選擇顯眼的地方,那么用戶就可以很容易地獲取自己的知識(shí)社區(qū)進(jìn)行學(xué)習(xí),非常的方便。

所以,掌握好鴻蒙卡片功能,能夠在細(xì)微的體驗(yàn)上,讓用戶感到貼心。下面,來(lái)我們講解這款教育類專欄分類照片,如何通過(guò)卡片進(jìn)行直達(dá)。

# 創(chuàng)建一個(gè)Java項(xiàng)目與卡片

首先,我們需要?jiǎng)?chuàng)建一個(gè)純Java項(xiàng)目。

接著,在生成的Java鴻蒙項(xiàng)目中,點(diǎn)擊entry-src右鍵創(chuàng)建Service Widget一個(gè)2*4的卡片布局:

創(chuàng)建完成之后,項(xiàng)目下面會(huì)生成一個(gè)java-widget文件,以及js卡片布局文件。

這樣你運(yùn)行項(xiàng)目,默認(rèn)會(huì)顯示鴻蒙開(kāi)發(fā)工具提供給你的2*4布局卡片。但是我們需要將卡片的功能換成技術(shù)社區(qū)的直接跳轉(zhuǎn),接下來(lái),我們來(lái)構(gòu)建卡片。

# 完成卡片布局

我們的整體布局并沒(méi)有變,但是后面的圖片以及前面的文字都發(fā)生了變化,而js文件下,有一個(gè)hml文件,這是一個(gè)類html語(yǔ)法的文件,我們只需要改變字符串字符串以及圖片即可,代碼如下(index.hml):

《div class=“div_basic_container”》

《stack class=“main_sub_container” onclick=“routerEvent”》 《image class=“item_image” src=“/common/homepage.png”》 《/image》

《div class=“div_text_container”》 《text class=“title”》主頁(yè) 《/text》 《/div》 《/stack》

《div class=“first_sub_container”》

《div class=“item_first_container” onclick=“routerEvent1”》 《text class=“text_item1”》Python 《/text》 《/div》

《div class=“item_second_container” onclick=“routerEvent2”》 《text class=“text_item2”》OpenCV 《/text》 《/div》 《/div》

《div class=“second_sub_container”》

《div class=“item_first_container” onclick=“routerEvent3”》 《text class=“text_item3”》鴻蒙開(kāi)發(fā) 《/text》 《/div》

《div class=“item_second_container” onclick=“routerEvent4”》 《text class=“text_item4”》量化交易 《/text》 《/div》 《/div》《/div》

接下來(lái),我們需要弄清楚,js卡片布局是如何跳轉(zhuǎn)到Java界面的,我們從上面的js文件發(fā)現(xiàn),還有一個(gè)index.json。沒(méi)錯(cuò),樣式由index.css產(chǎn)生,但跳轉(zhuǎn)以及與用戶的交互全在index.json文件中,代碼如下(index.json):

{ “data”: { “title”: “HomePage”, “textContent1”: “Python”, “textContent2”: “OpenCV”, “textContent3”: “Harmony”, “textContent4”: “Search” }, “actions”: { “routerEvent”: { “action”: “router”, “abilityName”: “com.liyuanjinglyj.javacarddemo.widget.WidgetAbility”, “params”: { “message”: “{{title}}” } }, “routerEvent1”: { “action”: “router”, “abilityName”: “com.liyuanjinglyj.javacarddemo.widget.WidgetAbility”, “params”: { “message”: “{{textContent1}}” } }, “routerEvent2”: { “action”: “router”, “abilityName”: “com.liyuanjinglyj.javacarddemo.widget.WidgetAbility”, “params”: { “message”: “{{textContent2}}” } }, “routerEvent3”: { “action”: “router”, “abilityName”: “com.liyuanjinglyj.javacarddemo.widget.WidgetAbility”, “params”: { “message”: “{{textContent3}}” } }, “routerEvent4”: { “action”: “router”, “abilityName”: “com.liyuanjinglyj.javacarddemo.widget.WidgetAbility”, “params”: { “message”: “{{textContent4}}” } } }}

如上面代碼所示,action表示這是路由跳轉(zhuǎn),其中,abilityName表示關(guān)聯(lián)的Java卡片生成類,而params表示傳遞的參數(shù)。當(dāng)然,params并不是界面的跳轉(zhuǎn)參數(shù),而是告訴Java你需要跳轉(zhuǎn)到哪個(gè)界面。

我們來(lái)看看WidgetImpl類的實(shí)現(xiàn)代碼:

public class WidgetImpl extends FormController {

@Override public Class《? extends AbilitySlice》 getRoutePageSlice(Intent intent) { HiLog.info(TAG, “set route page slice.”); String param = intent.getStringParam(“params”); ZSONObject zsonObject = ZSONObject.stringToZSON(param); switch (zsonObject.getString(“message”)) { case “HomePage”: return MainAbilitySlice.class; case “Python”: return FunctionPythonSlice.class; case “OpenCV”: return FunctionOpenCVSlice.class; case “Harmony”: return FunctionHarmonySlice.class; case “Search”: return FunctionSearchSlice.class; default: return null; } }}

這里大部分代碼我們都可以忽略,只需要關(guān)心getRoutePageSlice方法即可,可以看到,我們?cè)趇ndex.json中params指定的參數(shù),就是我們需要跳轉(zhuǎn)的Java界面,這里通過(guò)switch尋找我們卡片傳遞的參數(shù),然后跳轉(zhuǎn)到指定的界面。

比如,這里用戶如果需要學(xué)習(xí)python,那么就會(huì)傳遞python參數(shù),然后選擇FunctionPythonSlice界面進(jìn)行跳轉(zhuǎn)。其他的類同。

#實(shí)現(xiàn)卡片跳轉(zhuǎn)界面

對(duì)于App來(lái)說(shuō),不同的界面的社區(qū)往往會(huì)有不同的數(shù)據(jù),而每個(gè)數(shù)據(jù)又是通過(guò)json返回的,那么就會(huì)有不同的json接口提供給我們。

這里,我們來(lái)實(shí)現(xiàn)FunctionPythonSlice,代碼如下:

public class FunctionPythonSlice extends AbilitySlice {

private String url=“https://harmony-1300376177.cos.ap-shanghai.myqcloud.com/python_item.json”; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent((ComponentContainer) LYJUtils.getListContainer(url,this)); }}

這里通過(guò)博主自定義的工具類返回一個(gè)ListContainer界面,因?yàn)槊總€(gè)卡片上的功能只是跳轉(zhuǎn)的知識(shí)不同,但數(shù)據(jù)樣式基本一樣。而ListContainer界面的生成代碼如下(LYJUtils):

public class LYJUtils { public static ListContainer getListContainer(String url, AbilitySlice abilitySlice){ ListContainer listContainer=new ListContainer(null); listContainer.setLayoutConfig( new StackLayout.LayoutConfig( ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT )); ZZRHttp.get(url, new ZZRCallBack.CallBackString() { @Override public void onFailure(int code, String errorMessage) {//錯(cuò)誤處理 } @Override public void onResponse(String response) { //http訪問(wèn)成功,此部分內(nèi)容在主線程中工作; HiJson hiJson = new HiJson(response); int counts=hiJson.get(“news_item”).count(); List《InfoItem》 infoItemList=new ArrayList《》(); for(int i=0;i《counts;i++){ InfoItem infoItem=new InfoItem(); infoItem.setTitle(hiJson.get(“news_item”).get(i).value(“title”)); infoItem.setDigest(hiJson.get(“news_item”).get(i).value(“digest”)); infoItem.setUrl(hiJson.get(“news_item”).get(i).value(“url”)); infoItem.setThumb_url(hiJson.get(“news_item”).get(i).value(“thumb_url”)); infoItemList.add(infoItem); } InfoItemListProvider infoItemListProvider=new InfoItemListProvider(infoItemList, abilitySlice); listContainer.setItemProvider(infoItemListProvider); listContainer.setItemClickedListener(new ListContainer.ItemClickedListener() { @Override public void onItemClicked(ListContainer listContainer, Component component, int i, long l) { Intent intent=new Intent(); intent.setParam(“url”,infoItemList.get(i).getUrl()); abilitySlice.present(new WebViewAbilitySlice(),intent); } }); } }); return listContainer; }}

其他卡片功能的界面基本一致,唯有url提供的json接口不一樣。當(dāng)然,這里還涉及ListContainer適配器,代碼如下(InfoItemListProvider):

public class InfoItemListProvider extends BaseItemProvider { private List《InfoItem》 infoItemList=new ArrayList《》(); private AbilitySlice abilitySlice; HiLogLabel label=new HiLogLabel(HiLog.LOG_APP, 0x00201, “TAG”); public InfoItemListProvider(List《InfoItem》 infoItemList,AbilitySlice abilitySlice) { this.infoItemList=infoItemList; this.abilitySlice=abilitySlice; HiLog.error(label,String.valueOf(infoItemList.size())+“11111”); }

@Override public int getCount() { return infoItemList == null ? 0 : infoItemList.size(); }

@Override public Object getItem(int i) { if (infoItemList != null && i 》= 0 && i 《 infoItemList.size()){ return infoItemList.get(i); } return null; }

@Override public long getItemId(int i) { return i; }

@Override public Component getComponent(int i, Component component, ComponentContainer componentContainer) { final Component cpt; if (component == null) { cpt = LayoutScatter.getInstance(this.abilitySlice).parse(ResourceTable.Layout_infoitem_listitem, null, false); } else { cpt = component; } InfoItem infoItem = this.infoItemList.get(i); HiLog.error(label,String.valueOf(i)+“11111”); Text title=(Text)cpt.findComponentById(ResourceTable.Id_infoitem_listitem_title); title.setText(infoItem.getTitle()); Image image=(Image)cpt.findComponentById(ResourceTable.Id_infoitem_listitem_image); new ImageNetWork(this.abilitySlice,image,infoItem.getThumb_url()).start(); return cpt; }}

獲取ListContainer列表的實(shí)體類(InfoItem.java)如下所示:

public class InfoItem { String title;//標(biāo)題 String digest;//描述 String url;//文章鏈接 String thumb_url;//文章頭圖鏈接

public InfoItem(String title,String digest,String url,String thumb_url) { this.title=title; this.digest=digest; this.url=url; this.thumb_url=thumb_url; }

public InfoItem() { super(); }

public String getTitle() { return title; }

public void setTitle(String title) { this.title = title; }

public String getDigest() { return digest; }

public void setDigest(String digest) { this.digest = digest; }

public String getUrl() { return url; }

public void setUrl(String url) { this.url = url; }

public String getThumb_url() { return thumb_url; }

public void setThumb_url(String thumb_url) { this.thumb_url = thumb_url; }}

當(dāng)然,這里還涉及列表的樣式(infoitem_listitem.xml):

《DirectionalLayout xmlns:ohos=“http://schemas.huawei.com/res/ohos” ohos:height=“match_content” ohos:width=“match_parent” ohos:margin=“10vp” ohos:alpha=“0.5” ohos:background_element=“$graphic:listitem_backgroud” ohos:orientation=“vertical”》

《Image ohos:id=“$+id:infoitem_listitem_image” ohos:height=“150vp” ohos:width=“match_parent” ohos:scale_mode=“stretch”/》

《Text ohos:id=“$+id:infoitem_listitem_title” ohos:height=“match_content” ohos:width=“match_parent” ohos:text_size=“18vp” ohos:multiple_lines=“true” ohos:text_alignment=“l(fā)eft” ohos:bottom_margin=“5vp” ohos:left_margin=“2vp” ohos:right_margin=“2vp” ohos:top_margin=“5vp” ohos:text_color=“#0000FF”/》

《/DirectionalLayout》

#WebView文章詳情界面

除此之外,我們還要實(shí)現(xiàn)ListContainer的跳轉(zhuǎn)界面。因?yàn)檫@是網(wǎng)站的內(nèi)容,我們只需要通過(guò)WebView進(jìn)行加載即可。(WebViewAbilitySlice)代碼如下:

public class WebViewAbilitySlice extends AbilitySlice { HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, “TAG”); private WebView webView; private static String EXAMPLE_URL; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_web_view); this.webView=(WebView)this.findComponentById(ResourceTable.Id_ability_web_view_webview); this.webView.getWebConfig().setJavaScriptPermit(true); if(intent != null) { EXAMPLE_URL = intent.getStringParam(“url”); this.webView.setWebAgent(new ExampleWebAgent()); this.webView.load(EXAMPLE_URL); } }

private class ExampleWebAgent extends WebAgent { @Override public boolean isNeedLoadUrl(WebView webview, ResourceRequest request) { Uri uri = request.getRequestUrl(); if (EXAMPLE_URL.equals(uri.getDecodedHost())) { // 由WebView通過(guò)默認(rèn)方式處理 return false; }

// 增加開(kāi)發(fā)者自定義邏輯 return super.isNeedLoadUrl(webview, request); } }

@Override public void onActive() { super.onActive(); }

@Override public void onForeground(Intent intent) { super.onForeground(intent); }}

鴻蒙提供給我們的Java WebView組件默認(rèn)是直接跳轉(zhuǎn)到瀏覽器的,為了讓其在App內(nèi)部顯示,我們需要通過(guò)setWebAgent()方法進(jìn)行設(shè)置。

而樣式文件這里就不展示了,就只有一個(gè)WebView組件。

#主頁(yè)TabList與PageSlider聯(lián)動(dòng)

在眾多的App中,我們能看到頂部標(biāo)題欄可以進(jìn)行滑動(dòng)的切換頁(yè)面,而這里我們也來(lái)認(rèn)真實(shí)現(xiàn)卡片跳轉(zhuǎn)的主頁(yè)界面。

(MainAbilitySlice)代碼如下:

public class MainAbilitySlice extends AbilitySlice { HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, “TAG”); private PageSlider pageSlider; private TabList tabList; private String[] tab_str_list = {“推薦”, “Python”, “OpenCV”, “鴻蒙開(kāi)發(fā)”}; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); this.pageSlider = (PageSlider) findComponentById(ResourceTable.Id_ability_main_pageslider); this.pageSlider.setProvider(new MyPageProvider(getData(), this)); this.tabList = (TabList) findComponentById(ResourceTable.Id_ability_main_tablist); for (int i = 0; i 《 tab_str_list.length; i++) { TabList.Tab tab = tabList.new Tab(getContext()); tab.setText(tab_str_list[i]); tab.setLayoutConfig( new StackLayout.LayoutConfig( ComponentContainer.LayoutConfig.MATCH_CONTENT, ComponentContainer.LayoutConfig.MATCH_PARENT )); this.tabList.addTab(tab); if (i == 0) { tab.select(); } } this.tabList.addTabSelectedListener(new TabList.TabSelectedListener() { @Override public void onSelected(TabList.Tab tab) { //當(dāng)某個(gè)Tab從未選中狀態(tài)變?yōu)檫x中狀態(tài)時(shí)的回調(diào) pageSlider.setCurrentPage(tab.getPosition()); }

@Override public void onUnselected(TabList.Tab tab) { //當(dāng)某個(gè)Tab從選中狀態(tài)變?yōu)槲催x中狀態(tài)時(shí)的回調(diào) }

@Override public void onReselected(TabList.Tab tab) { //當(dāng)某個(gè)Tab已處于選中狀態(tài),再次被點(diǎn)擊時(shí)的狀態(tài)回調(diào) } }); pageSlider.addPageChangedListener(new PageSlider.PageChangedListener() { @Override public void onPageSliding(int itemPos, float itemPosOffset, int itemPosPixles) {

}

@Override public void onPageSlideStateChanged(int state) { }

@Override public void onPageChosen(int itemPos) { tabList.selectTabAt(itemPos); } }); }

private List《String》 getData(){ List《String》 stringList=new ArrayList《》(); stringList.add(“https://harmony-1300376177.cos.ap-shanghai.myqcloud.com/swiper_item.json”); stringList.add(“https://harmony-1300376177.cos.ap-shanghai.myqcloud.com/python_item.json”); stringList.add(“https://harmony-1300376177.cos.ap-shanghai.myqcloud.com/opencv_item.json”); stringList.add(“https://harmony-1300376177.cos.ap-shanghai.myqcloud.com/harmony_item.json”); return stringList; }

主頁(yè)的布局文件(ability_main.xml)代碼如下所示:

《?xml version=“1.0” encoding=“utf-8”?》《DirectionalLayout xmlns:ohos=“http://schemas.huawei.com/res/ohos” ohos:height=“match_parent” ohos:width=“match_parent” ohos:alignment=“center” ohos:orientation=“vertical”》

《TabList ohos:id=“$+id:ability_main_tablist” ohos:height=“match_content” ohos:width=“match_parent” ohos:tab_margin=“12vp” ohos:text_alignment=“center” ohos:orientation=“horizontal” ohos:fixed_mode=“true” ohos:text_size=“20vp” ohos:normal_text_color=“#808080” ohos:selected_text_color=“#000000” ohos:selected_tab_indicator_color=“#FF0000” ohos:selected_tab_indicator_height=“3vp”/》

《PageSlider ohos:id=“$+id:ability_main_pageslider” ohos:height=“match_parent” ohos:width=“match_parent” ohos:layout_alignment=“center”/》

《/DirectionalLayout》

ListContainer需要適配器進(jìn)行適配,PageSlider同樣也是需要,我們需要給PageSlider提供不同的鏈接,然后PageSlider單個(gè)頁(yè)面的ListContainer根據(jù)這些鏈接接口獲取不同的知識(shí)列表。(MyPageProvider)代碼如下:

public class MyPageProvider extends PageSliderProvider { HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, “TAG”); private AbilitySlice abilitySlice; private List《String》 stringList;

public MyPageProvider(List《String》 list,AbilitySlice abilitySlice){ this.stringList=list; this.abilitySlice=abilitySlice; }

@Override public int getCount() { return this.stringList.size(); }

@Override public Object createPageInContainer(ComponentContainer componentContainer, int i) { final String url = this.stringList.get(i); ListContainer listContainer=new ListContainer(null); listContainer.setLayoutConfig( new StackLayout.LayoutConfig( ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT )); ZZRHttp.get(url, new ZZRCallBack.CallBackString() { @Override public void onFailure(int code, String errorMessage) { //錯(cuò)誤處理 } @Override public void onResponse(String response) { //http訪問(wèn)成功,此部分內(nèi)容在主線程中工作; //可以更新UI等操作,但請(qǐng)不要執(zhí)行阻塞操作。 HiJson hiJson = new HiJson(response); int counts=hiJson.get(“news_item”).count(); List《InfoItem》 infoItemList=new ArrayList《》(); for(int i=0;i《counts;i++){ InfoItem infoItem=new InfoItem(); infoItem.setTitle(hiJson.get(“news_item”).get(i).value(“title”)); infoItem.setDigest(hiJson.get(“news_item”).get(i).value(“digest”)); infoItem.setUrl(hiJson.get(“news_item”).get(i).value(“url”)); infoItem.setThumb_url(hiJson.get(“news_item”).get(i).value(“thumb_url”)); infoItemList.add(infoItem); } InfoItemListProvider infoItemListProvider=new InfoItemListProvider(infoItemList, abilitySlice); listContainer.setItemProvider(infoItemListProvider); listContainer.setItemClickedListener(new ListContainer.ItemClickedListener() { @Override public void onItemClicked(ListContainer listContainer, Component component, int i, long l) { Intent intent=new Intent(); intent.setParam(“url”,infoItemList.get(i).getUrl()); abilitySlice.present(new WebViewAbilitySlice(),intent); } }); } }); componentContainer.addComponent(listContainer); return listContainer; }

@Override public void destroyPageFromContainer(ComponentContainer componentContainer, int i, Object o) { componentContainer.removeComponent((Component) o); }

@Override public boolean isPageMatchToObject(Component component, Object o) { return true; }}

到這里,我們的教育類App卡片分類功能就全部完成了,實(shí)現(xiàn)的效果如頂部視頻所示。

#其他權(quán)限設(shè)置

當(dāng)然,這款A(yù)pp卡片功能要能完美的運(yùn)行,還不能少了部分權(quán)限具體配置文件config.json修改如下所示:

“module”: { “reqPermissions”: [ { “name”: “ohos.permission.INTERNET” }, { “name”: “ohos.permission.GET_NETWORK_INFO” }, { “name”: “ohos.permission.SET_NETWORK_INFO” } ], “metaData”: { “customizeData”: [ { “name”: “hwc-theme”, “value”: “androidhwext:style/Theme.Emui.Light.NoTitleBar” } ] },

其中,reqPermissions是權(quán)限,這里因?yàn)楂@取了網(wǎng)絡(luò)的json數(shù)據(jù),所以必須給與網(wǎng)絡(luò)權(quán)限。而metaData是樣式,這里我們?nèi)コ四J(rèn)的標(biāo)題欄。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2997

    瀏覽量

    115788
  • 卡片
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9424
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4947

    瀏覽量

    73285
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    69410

原文標(biāo)題:#HarmonyOS征文#教育類社區(qū)卡片實(shí)戰(zhàn)

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    基于級(jí)聯(lián)分類器的人臉檢測(cè)基本原理

    本次分享的內(nèi)容是基于級(jí)聯(lián)分類器的人臉檢測(cè)基本原理 1) 人臉檢測(cè)概述 關(guān)于人臉檢測(cè)算法,目前主流方法分為兩,一是基于知識(shí),主要方法包括模板匹配,人臉特征,形狀和邊緣,紋理特征,顏色特征
    發(fā)表于 10-30 06:14

    HarmonyOSAI編程萬(wàn)能卡片生成(二)

    工程保存完成后,工程中會(huì)新增如下卡片相關(guān)文件: 自定義配置邏輯代碼 邏輯代碼包含實(shí)現(xiàn)卡片數(shù)據(jù)交互和卡片事件兩。 卡片數(shù)據(jù)交互:觸發(fā)
    發(fā)表于 09-09 16:10

    HarmonyOSAI編程萬(wàn)能卡片生成(一)

    基于AI大模型理解開(kāi)發(fā)者的卡片需求信息,通過(guò)對(duì)話式的交互智能生成HarmonyOS萬(wàn)能卡片工程。 使用約束 建議從以下維度描述卡片需求: 當(dāng)前不支持在生成
    發(fā)表于 09-08 17:09

    如何對(duì)電能質(zhì)量在線監(jiān)測(cè)裝置的應(yīng)用場(chǎng)景進(jìn)行分類?

    、功能配置、數(shù)據(jù)精度要求差異顯著,分類結(jié)果可直接指導(dǎo)裝置選型、校準(zhǔn)頻率設(shè)定及運(yùn)維策略制定。以下從 4 個(gè)核心維度進(jìn)行詳細(xì)分類: 一、按電力系統(tǒng) “發(fā) - 輸 - 配 - 用” 層級(jí)分類
    的頭像 發(fā)表于 09-02 17:48 ?563次閱讀
    如何對(duì)電能質(zhì)量在線監(jiān)測(cè)裝置的應(yīng)用場(chǎng)景<b class='flag-5'>進(jìn)行</b><b class='flag-5'>分類</b>?

    HarmonyOS AI輔助編程工具(CodeGenie)卡片生成

    、 自定義配置邏輯代碼 邏輯代碼包含實(shí)現(xiàn)卡片數(shù)據(jù)交互和卡片事件兩卡片數(shù)據(jù)交互:觸發(fā)卡片頁(yè)面刷新。應(yīng)用工程生成的
    發(fā)表于 08-12 11:04

    網(wǎng)線面板分五

    網(wǎng)線面板確實(shí)分五和六,這種分類主要基于其適配的網(wǎng)線類型及傳輸性能,以下是具體說(shuō)明: 一、分類依據(jù) 適配網(wǎng)線類型 五面板:專為五
    的頭像 發(fā)表于 08-08 09:46 ?3045次閱讀

    用一杯咖啡的時(shí)間,讀懂AI二分類如何守護(hù)工業(yè)質(zhì)量

    您是否想過(guò),工廠里那些"非黑即白"的判斷,正由AI用最簡(jiǎn)潔的邏輯守護(hù)質(zhì)量?今天,讓我們通過(guò)一個(gè)零件組裝中的彈墊錯(cuò)裝、漏裝、多裝、錯(cuò)序分類案例,拆解AI二分類技術(shù)的核心
    的頭像 發(fā)表于 07-08 07:35 ?726次閱讀
    用一杯咖啡的時(shí)間,讀懂AI二<b class='flag-5'>分類</b>如何守護(hù)工業(yè)質(zhì)量

    FA模型卡片和Stage模型卡片切換

    卡片切換 卡片切換主要包含如下三部分: 卡片頁(yè)面布局:FA模型卡片和Stage模型卡片的布局都采用
    發(fā)表于 06-06 08:10

    arm指令速查手冊(cè)

    ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的 RISC 處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點(diǎn),適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、DSP 和移動(dòng)式應(yīng)用等。
    發(fā)表于 06-05 17:13 ?1次下載

    風(fēng)華貼片電感的標(biāo)準(zhǔn)分類體系

    作為國(guó)內(nèi)電子元器件領(lǐng)域的領(lǐng)軍企業(yè),風(fēng)華高科通過(guò)構(gòu)建多維度分類體系,實(shí)現(xiàn)了貼片電感產(chǎn)品的精準(zhǔn)定位與高效應(yīng)用。其分類邏輯融合了結(jié)構(gòu)特征、功能特性及場(chǎng)景適配性,形成了涵蓋產(chǎn)品形態(tài)、技術(shù)參數(shù)、應(yīng)用領(lǐng)域
    的頭像 發(fā)表于 05-19 14:04 ?507次閱讀
    風(fēng)華貼片電感的標(biāo)準(zhǔn)<b class='flag-5'>分類</b>體系

    SOLIDWORKS 2025教育教育資源的整合與支持

    ,通過(guò)深度整合課程資源、仿真工具、認(rèn)證體系與協(xié)作平臺(tái),為全球工程教育打造了一個(gè)“教-學(xué)-練-創(chuàng)”一體化的數(shù)字生態(tài),重新定義工程人才培養(yǎng)的范式。 一、課程深度集成:從“知識(shí)孤島”到“體系化學(xué)習(xí)” SOLIDWORKS 2025教育
    的頭像 發(fā)表于 05-07 17:04 ?592次閱讀
    SOLIDWORKS 2025<b class='flag-5'>教育</b>版 <b class='flag-5'>教育</b>資源的整合與支持

    電子元器件的分類方式

    電子元器件可以按照不同的分類標(biāo)準(zhǔn)進(jìn)行分類,以下是一些常見(jiàn)的分類方式。
    的頭像 發(fā)表于 04-16 14:52 ?2229次閱讀

    HarmonyOS官網(wǎng)上線“穩(wěn)定性”專欄 助力更穩(wěn)定流暢的鴻蒙原生應(yīng)用開(kāi)發(fā)

    情況:訪問(wèn)空指針、訪問(wèn)已經(jīng)釋放的內(nèi)存和內(nèi)存訪問(wèn)越界。但具體是哪種情況觸發(fā)的應(yīng)用閃退,還需要我們根據(jù)相應(yīng)代碼片段進(jìn)行具體分析,較為耗時(shí)。我們可以參考穩(wěn)定性專欄中的相關(guān)內(nèi)容,來(lái)降低定位難度并縮減定位時(shí)間
    發(fā)表于 02-17 17:17

    效率大升!AI賦能鴻蒙萬(wàn)能卡片開(kāi)發(fā)

    萬(wàn)能卡片,作為鴻蒙生態(tài)應(yīng)用和元服務(wù)的重要展示形式,憑借將關(guān)鍵信息和核心操作前置,實(shí)現(xiàn)服務(wù)直達(dá)、減少跳轉(zhuǎn)層級(jí)的體驗(yàn)效果,備受用戶和開(kāi)發(fā)者青睞。但傳統(tǒng)卡片的設(shè)計(jì)和編碼流程相對(duì)繁瑣,影響了萬(wàn)能卡片
    的頭像 發(fā)表于 01-13 13:44 ?1458次閱讀
    效率大升!AI賦能鴻蒙萬(wàn)能<b class='flag-5'>卡片</b>開(kāi)發(fā)

    LabVIEW使用Vision視覺(jué)進(jìn)行硬幣分類計(jì)數(shù)

    LabVIEW使用Vision視覺(jué)進(jìn)行硬幣分類計(jì)數(shù),有償,帶價(jià)加q:3430396759
    發(fā)表于 12-29 20:20