JS组件分为以下四大类
基础组件
text、image、progress、rating、span、marquee、image-animator、divider、search、 menu、chart
容器组件
div、list、list-item、stack、swiper、tabs、tab-bar、tab-content、list-item-group、 refresh、dialog
媒体组件 video
画布组件 canvas
本次要讲解的知识点是JS FA 调用 Java PA
目录结构如下:
package com.gulixiong.jsuidemo01.model; public class MyData { private String usreName; private String password; public String getUsreName() { return usreName; } public void setUsreName(String usreName) { this.usreName = usreName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "MydData{" + "usreName='" + usreName + '\'' + ", password='" + password + '\'' + '}'; } }
java PA代码如下:
package com.gulixiong.jsuidemo01; import com.gulixiong.jsuidemo01.model.MyData; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; import ohos.hiviewdfx.HiLogLabel; import ohos.rpc.*; import ohos.utils.zson.ZSONObject; import java.util.HashMap; import java.util.Map; /** * 接收和处理js传递过来的数据 */ public class JSAbility extends Ability { private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD001100, "Demo"); @Override public void onStart(Intent intent) { super.onStart(intent); } @Override public void onStop() { super.onStop(); } private MyJsData data=new MyJsData(); @Override protected IRemoteObject onConnect(Intent intent) { return data.asObject(); } //自定义消息处理类 class MyJsData extends RemoteObject implements IRemoteBroker{ public MyJsData() { super("jsAbility"); } /** * 接收和处理js数据的方法 * @param code * @param data * @param reply * @param option * @return * @throws RemoteException */ @Override public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException { boolean flag=false; switch (code) { case 1001:{ String dataStr = data.readString(); //将js的数据转化为Java对象 MyData myData = ZSONObject.stringToClass(dataStr, MyData.class); //返回数据给js Map<String,Object> map=new HashMap<>(); map.put("code","success"); map.put("data","123456"); //将封装给js转成String String dataStrNew=ZSONObject.toZSONString(map); reply.writeString(dataStr); } } return false; } /** * 接收和返回js传递过来的数据 * @return */ @Override public IRemoteObject asObject() { return this; } } }
最后运行如下: