weex 和 native 的交互

先说一下 Android的扩展能力之module

一、module扩展 是用于weex和Android的数据交互。

有三点要注意的地方:
1、必须继承WXModule,并且不能被混淆
2、必须添加@JSMethod (uiThread = false or true) 注解,必须是public方法
3、module必须注册

数据交互就是通信。具体的厘子如下:

1、创建WeexCallBackModule类继承自 WXModule
2、创建两个方法

    方法1:call(String msg,JScallback callback) 带参数方法 根据注释可以看出,Android接收到weex的消息msg后,并给weex一个回复。
    方法2:jumpPage()  无参数方法,功能是页面跳转。仅提供给weex调用,不回复信息。

public class WeexCallBackModule extends WXModule {

 /**
     * 用于module注册
     * @return 返回类名
     */
    public static String getLocalName(){
        return "WeexCallBackModule";
    }
 /**
     * 
     * @param msg 来自于weex 的参数
     * @param callback weex 回调接口
     */
    @JSMethod(uiThread = true)
    public void call(String msg, JSCallback callback){
        Log.d("nade", "call: 接收到weex="+msg);
        Toast.makeText(mWXSDKInstance.getContext(), "获取来自weex的数据"+msg, Toast.LENGTH_SHORT).show();
        callback.invoke("以收到weex端数据,回复告知。");
    }

    @JSMethod(uiThread = true)
    public void jumpPage(){
        mWXSDKInstance.getContext().startActivity(new Intent(mWXSDKInstance.getContext(), NavigatorActivity.class));
    }
}

 

3、注册module

WXSDKEngine.registerModule(WeexCallBackModule.getLocalName(),WeexCallBackModule.class);

二、Component 扩展 是用于weex和Android的ui交互。
说白了,Component 扩展就是Android自定义view交给weex使用的一种方式。

有三点要注意的地方:
1、必须继承WXComponent<View>,并指定View类型, 并且不能被混淆
2、必须添加@WXComponentProp(name = value ) 注解,value是属性值,提供给weex赋值使用。必须是public方法
3、Component 必须注册

参照官方写一个简单的富文本显示view



public class RichText extends WXComponent<TextView> {
    /**
     * 用于Component注册
     * @return 返回类名
     */
    public static String getLocalName() {
        return "RichText";
    }


    /**
     * 构造方法
     * @param instance
     * @param parent
     * @param basicComponentData
     */
    public RichText(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) {
        super(instance, parent, basicComponentData);
    }

    /**
     * 初始化view 定义view属性 并返回
     * @param context
     * @return
     */
    @Override
    protected TextView initComponentHostView(@NonNull Context context) {
        TextView view = new TextView(context);
        view.setTextSize(20);
        view.setTextColor(Color.BLUE);
        view.setBackground(context.getResources().getDrawable(R.drawable.richtextstyle));
        return view;
    }

    /**
     * 添加属性值 并设置显示。
     * @param telNumber weex 传递的需要显示的值
     */
    @WXComponentProp(name = "tel")
    public void setTel(String telNumber){
        getHostView().setText(telNumber);
    }

}

本文完。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值