HarmonyOS学习路之开发篇—Java UI框架

开发 后端 OpenHarmony
上两篇文章已经介绍了大部分的Java UI组件 ,因为时间关系把一个内容分为了三个部分,这是最后一篇组件的介绍。分别介绍ListContainer、ScrollView和WebView。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

接上一篇文章…

上两篇文章已经介绍了大部分的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”,并添加如下配置。

  1.   ... 
  2.   "module": { 
  3.     ... 
  4.     "reqPermissions": [ 
  5.       { 
  6.         "name""ohos.permission.INTERNET" 
  7.       } 
  8.     ], 
  9.     ... 
  10.   } 

 与Android中的Webview有着一样的功能,显示相应的网页数据,并且可以与JavaScript代码相互调用。

通过WebConfig启用JavaScript

  1. webView.getWebConfig().setJavaScriptPermit(true); 

 使用回调方法或者应用内部调用JavaScript方法。

注入回调对象到页面内容

  1. final String jsName = "JsCallbackToApp"
  2. webView.addJsCallback(jsName, new JsCallback() { 
  3.     @Override 
  4.     public String onCallback(String msg) { 
  5.         // 增加自定义处理 
  6.         return "jsResult"
  7.     } 
  8. }); 
  9. //--------------------------------------------- 
  10. function callToApp() { 
  11.     if (window.JsCallbackToApp && window.JsCallbackToApp.call) { 
  12.        var result = JsCallbackToApp.call("message from web"); 
  13.     } 

 在应用内调用页面内的JavaScript方法。

  1. webView.executeJs("javascript:callFuncInWeb()", new AsyncCallback<String>() { 
  2.     @Override 
  3.     public void onReceive(String msg) { 
  4.         // 在此确认返回结果 
  5.     } 
  6. }); 

 观测Web状态

通过setWebAgent方法设置自定义WebAgent对象,以观测页面状态变更等事件:

  1. webView.setWebAgent(new WebAgent() { 
  2.     @Override 
  3.     public void onLoadingPage(WebView webview, String url, PixelMap favicon) { 
  4.         super.onLoadingPage(webview, url, favicon); 
  5.         // 页面开始加载时自定义处理 
  6.     } 
  7.  
  8.     @Override 
  9.     public void onPageLoaded(WebView webview, String url) { 
  10.         super.onPageLoaded(webview, url); 
  11.         // 页面加载结束后自定义处理 
  12.     } 
  13.  
  14.     @Override 
  15.     public void onLoadingContent(WebView webview, String url) { 
  16.         super.onLoadingContent(webview, url); 
  17.         // 加载资源时自定义处理 
  18.     } 
  19.  
  20.     @Override 
  21.     public void onError(WebView webview, ResourceRequest request, ResourceError error) { 
  22.         super.onError(webview, request, error); 
  23.         // 发生错误时自定义处理 
  24.     } 
  25. }); 

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-08-10 09:31:54

鸿蒙HarmonyOS应用

2020-11-17 11:48:44

HarmonyOS

2014-06-05 14:12:05

SwiftUI学习iOS

2010-09-25 13:09:39

UISymbian

2020-11-25 12:02:02

TableLayout

2021-10-14 15:14:36

鸿蒙HarmonyOS应用

2021-08-12 15:01:09

鸿蒙HarmonyOS应用

2011-04-14 10:05:16

BlackBerry

2011-04-14 10:03:32

UI组件BlackBerry

2021-06-29 14:48:58

鸿蒙HarmonyOS应用

2021-09-14 09:34:05

鸿蒙HarmonyOS应用

2021-06-18 14:55:57

鸿蒙HarmonyOS应用

2013-07-24 18:14:36

Android开发学习Android UIButton

2021-05-28 17:01:49

鸿蒙HarmonyOS应用

2021-07-01 09:19:56

鸿蒙HarmonyOS应用

2019-06-26 05:29:44

深度学习KerasPyTorch

2023-01-04 15:24:46

ACE组件UI布局

2020-10-23 09:47:19

HarmonyOSJS开发框架

2020-11-11 11:56:05

HarmonyOS

2022-06-27 14:12:32

css鸿蒙自定义
点赞
收藏

51CTO技术栈公众号