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


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

项目的结构图:

是采用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
1498

被折叠的 条评论
为什么被折叠?



