+号功能区的扩展
优质
小牛编辑
135浏览
2023-12-01
4.+号功能区的扩展功能
+号功能区的扩展是指在点击+号之后显示的功能区加入自定义功能。
/**
* @param functionName 添加功能的名字
* @param functionIcon 添加功能的图标
*/
Ntalker.getInstance().addPlusFunction(String functionName, int functionIcon);
例如要添加最近订单的功能,代码如下:
Ntalker.getInstance().addPlusFunction("最近订单", R.drawable.recentorder);
/**
* 添加自定义功能的点击事件监听
*/
Ntalker.getInstance().setOnPlusFunctionClickListener(new OnPlusFunctionClickListener() {
@Override
public void onPlusFunctionClick(String functionName) {
if (functionName.equals("最近订单")) {
Toast.makeText(getApplicationContext(), "点击了最近订单图标", 1).show();
}
}
});
其中,自定义功能的点击发送有两种发送方法,一种是以纯文本形式发送出去,一种是以卡片方式发送出去。
以纯文本方式发送出去的方法如下:
/**
* @param msgs 发送的消息内容
*/
Ntalker.getInstance().sendNMsg(String msgs);
以卡片的方式发送出去,即在点击发送之后在聊天窗口内显示的消息是一种卡片的方式,方法如下:
step1:调用setOnSendCustomMsgListener方法,传入发送出去的消息类型sendType和显示在聊天窗口的消息内容msgs,此消息内容会在step3中回调使用。
/**
* @param sendType 发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
* @param msgs 发送的消息数据
*/
Ntalker.getInstance().setOnSendCustomMsgListener(int sendType, String[] msgs);
step2:调用setOnShowCustomMsgListener方法,传入发送出去的消息类型sendType,消息显示出来的布局resId和OnShowCustomMsgListener监听;
/**
* @param sendType 发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
* @param resId 自定义布局id
* @param OnShowCustomMsgListener
*/
Ntalker.getInstance().setOnShowCustomMsgListener(int sendType, int resId, OnShowCustomMsgListener customListener);
step3:实现方法onShowCustomMsgListener,在此方法中设置数据,以设置订单消息为例,代码如下:
/**
*
* @param view 传入的订单的布局
* @param msgType 发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
* @param msg 消息的数据
*/
@Override
public void onShowCustomMsgListener(View view, int msgType, String[] msg) {
if (msgType == 2)
{
TextView tv_orderid = (TextView) view.findViewById(R.id.tv_orderid_demo);
TextView tv_ordernum = (TextView) view.findViewById(R.id.tv_ordernum_demo);
TextView tv_orderprice = (TextView) view.findViewById(R.id.tv_orderprice_demo);
TextView tv_ordertime = (TextView) view.findViewById(R.id.tv_ordertime_demo);
ImageView pic = (ImageView) view.findViewById(R.id.iv_icon_demo);
RelativeLayout rl_custom = (RelativeLayout) view.findViewById(R.id.rl_custom);
tv_orderid.setText(msg[0]);
tv_ordernum.setText(msg[1]);
tv_ordertime.setText(msg[2]);
tv_orderprice.setText(msg[3]);
rl_custom.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "点击跳转到订单", Toast.LENGTH_SHORT).show();
}
});
}
}