HarmonyOS學(xué)習(xí)路之開(kāi)發(fā)篇—Java UI框架
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
接上一篇文章…
上兩篇文章已經(jīng)介紹了大部分的Java UI組件 ,因?yàn)闀r(shí)間關(guān)系把一個(gè)內(nèi)容分為了三個(gè)部分,這是最后一篇組件的介紹。分別介紹ListContainer、ScrollView和WebView。
二、分類說(shuō)明
⑪ListContainer
ListContainer是用來(lái)呈現(xiàn)連續(xù)、多行數(shù)據(jù)的組件,包含一系列相同類型的列表項(xiàng)。
ListContainer和ScrollView在介紹嵌套開(kāi)發(fā)時(shí)使用到了其中的一些屬性,但是沒(méi)有具體的介紹說(shuō)明。
ListContainer的共有XML屬性繼承自:Component,其基礎(chǔ)屬性就不再過(guò)多的贅述。ListContainer的自有XML屬性見(jiàn)下表:
使用ListContainer時(shí),需要編寫(xiě)適配器來(lái)構(gòu)造不同的數(shù)據(jù)結(jié)構(gòu),在編寫(xiě)適配器時(shí)需要注意:要繼承自BaseItemProvider并重寫(xiě)以下方法。
⑫ScrollView
ScrollView是一種帶滾動(dòng)功能的組件,它采用滑動(dòng)的方式在有限的區(qū)域內(nèi)顯示更多的內(nèi)容。
ScrollView的共有XML屬性繼承自:StackLayout,ScrollView的自有XML屬性見(jiàn)下表:
ScrollView的速度、滾動(dòng)、回彈等常用接口如下:
⑬WebView
WebView提供在應(yīng)用中集成Web頁(yè)面的能力。
在使用WebView時(shí)需要配置應(yīng)用的網(wǎng)絡(luò)權(quán)限。打開(kāi)“entry > src > main > config.json”,并添加如下配置。
- {
- ...
- "module": {
- ...
- "reqPermissions": [
- {
- "name": "ohos.permission.INTERNET"
- }
- ],
- ...
- }
- }
與Android中的Webview有著一樣的功能,顯示相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并且可以與JavaScript代碼相互調(diào)用。
通過(guò)WebConfig啟用JavaScript
- webView.getWebConfig().setJavaScriptPermit(true);
使用回調(diào)方法或者應(yīng)用內(nèi)部調(diào)用JavaScript方法。
注入回調(diào)對(duì)象到頁(yè)面內(nèi)容
- final String jsName = "JsCallbackToApp";
- webView.addJsCallback(jsName, new JsCallback() {
- @Override
- public String onCallback(String msg) {
- // 增加自定義處理
- return "jsResult";
- }
- });
- //---------------------------------------------
- function callToApp() {
- if (window.JsCallbackToApp && window.JsCallbackToApp.call) {
- var result = JsCallbackToApp.call("message from web");
- }
- }
在應(yīng)用內(nèi)調(diào)用頁(yè)面內(nèi)的JavaScript方法。
- webView.executeJs("javascript:callFuncInWeb()", new AsyncCallback<String>() {
- @Override
- public void onReceive(String msg) {
- // 在此確認(rèn)返回結(jié)果
- }
- });
觀測(cè)Web狀態(tài)
通過(guò)setWebAgent方法設(shè)置自定義WebAgent對(duì)象,以觀測(cè)頁(yè)面狀態(tài)變更等事件:
- webView.setWebAgent(new WebAgent() {
- @Override
- public void onLoadingPage(WebView webview, String url, PixelMap favicon) {
- super.onLoadingPage(webview, url, favicon);
- // 頁(yè)面開(kāi)始加載時(shí)自定義處理
- }
- @Override
- public void onPageLoaded(WebView webview, String url) {
- super.onPageLoaded(webview, url);
- // 頁(yè)面加載結(jié)束后自定義處理
- }
- @Override
- public void onLoadingContent(WebView webview, String url) {
- super.onLoadingContent(webview, url);
- // 加載資源時(shí)自定義處理
- }
- @Override
- public void onError(WebView webview, ResourceRequest request, ResourceError error) {
- super.onError(webview, request, error);
- // 發(fā)生錯(cuò)誤時(shí)自定義處理
- }
- });
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)