HarmonyOS學習路之開發篇—Java UI框架
接上一篇文章…
上兩篇文章已經介紹了大部分的Java UI組件 ,因為時間關系把一個內容分為了三個部分,這是最后一篇組件的介紹。分別介紹ListContainer、ScrollView和WebView。
二、分類說明
⑪ListContainer
ListContainer是用來呈現連續、多行數據的組件,包含一系列相同類型的列表項。
ListContainer和ScrollView在介紹嵌套開發時使用到了其中的一些屬性,但是沒有具體的介紹說明。
ListContainer的共有XML屬性繼承自:Component,其基礎屬性就不再過多的贅述。ListContainer的自有XML屬性見下表:
使用ListContainer時,需要編寫適配器來構造不同的數據結構,在編寫適配器時需要注意:要繼承自BaseItemProvider并重寫以下方法。
⑫ScrollView
ScrollView是一種帶滾動功能的組件,它采用滑動的方式在有限的區域內顯示更多的內容。
ScrollView的共有XML屬性繼承自:StackLayout,ScrollView的自有XML屬性見下表:
ScrollView的速度、滾動、回彈等常用接口如下:
⑬WebView
WebView提供在應用中集成Web頁面的能力。
在使用WebView時需要配置應用的網絡權限。打開“entry > src > main > config.json”,并添加如下配置。
- {
- ...
- "module": {
- ...
- "reqPermissions": [
- {
- "name": "ohos.permission.INTERNET"
- }
- ],
- ...
- }
- }
與Android中的Webview有著一樣的功能,顯示相應的網頁數據,并且可以與JavaScript代碼相互調用。
通過WebConfig啟用JavaScript
- webView.getWebConfig().setJavaScriptPermit(true);
使用回調方法或者應用內部調用JavaScript方法。
注入回調對象到頁面內容
- 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");
- }
- }
在應用內調用頁面內的JavaScript方法。
- webView.executeJs("javascript:callFuncInWeb()", new AsyncCallback<String>() {
- @Override
- public void onReceive(String msg) {
- // 在此確認返回結果
- }
- });
觀測Web狀態
通過setWebAgent方法設置自定義WebAgent對象,以觀測頁面狀態變更等事件:
- webView.setWebAgent(new WebAgent() {
- @Override
- public void onLoadingPage(WebView webview, String url, PixelMap favicon) {
- super.onLoadingPage(webview, url, favicon);
- // 頁面開始加載時自定義處理
- }
- @Override
- public void onPageLoaded(WebView webview, String url) {
- super.onPageLoaded(webview, url);
- // 頁面加載結束后自定義處理
- }
- @Override
- public void onLoadingContent(WebView webview, String url) {
- super.onLoadingContent(webview, url);
- // 加載資源時自定義處理
- }
- @Override
- public void onError(WebView webview, ResourceRequest request, ResourceError error) {
- super.onError(webview, request, error);
- // 發生錯誤時自定義處理
- }
- });