Android自定义聊天界面,可文字聊天,可语音消息

最近接到一个小项目,聊天功能,可发文字,可以说话发语言消息,语音消息可以点击播放,展示一下效果:
在这里插入图片描述
在这里插入图片描述

底部的语音图标,可以切换语音发送,如上图

在这里插入图片描述
项目的结构图:
在这里插入图片描述
是采用listview列表显示的消息,发送功能代码如下:

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(inputText.getText().toString().equals("")){
                    Toast.makeText(Chatting.this, "请输入信息", Toast.LENGTH_SHORT).show();
                    return;
                }
                u=UUID.randomUUID();
                Msg mm = new Msg(u.toString(),Msg.TYPE_SENT,inputText.getText().toString().trim(),
                        "",0);
                msgList.add(mm);
                adapter=new MsgAdapter(getBaseContext(),R.layout.layout_chat,msgList);
                listview.setAdapter(adapter);
                int count = listview.getAdapter().getCount();
                listview.setSelection(count - 1);
                inputText.setText("");
            }
        });

在列表的适配器中,关于不同消息的展示,比如发送方显示在右边,收到信息方展示在左边,文字的展示,语音的展示的判断代码如下:

        if(msg.getType() == Msg.TYPE_RECEIVED){
            viewHolder.leftLayout.setVisibility(View.VISIBLE);
            viewHolder.rightLayout.setVisibility(View.GONE);
            viewHolder.right_layout_voice.setVisibility(View.GONE);
            viewHolder.leftMsg.setText(msg.getContent());
        }else if(msg.getType()==Msg.TYPE_SENT){
            viewHolder.leftLayout.setVisibility(View.GONE);

            if(msg.getFileName().equals("")){
                viewHolder.rightLayout.setVisibility(View.VISIBLE);
                viewHolder.right_layout_voice.setVisibility(View.GONE);
                viewHolder.rightMsg.setText(msg.getContent());
            }else{
                viewHolder.right_layout_voice.setVisibility(View.VISIBLE);
                viewHolder.rightLayout.setVisibility(View.GONE);
                viewHolder.time.setText(msg.getTime()+"");
            }
        }

总体来说,是一个比较简约的课程设计,这个功能可以当作一个模块使用,如果有需要获取源码或者根据要求编写程序,可以加薇:JuicePeng3000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值