上图为腾讯QQ手机端的聊天界面截图,现在很多即时通讯App在聊天界面上都与之相似,由底下的编辑栏以及上方的消息展示界面组成。而上方的消息展示界面主要的组成部分是用户的头像、消息发送的时间以及显示聊天内容的“文字气泡”。本文主要讲解消息展示界面的实现。
在Android中,这类消息展示界面是通过ListView控件去构建的。很多时候我在开发时用到的ListView其中每一个item的UI布局都是一样的,唯一的不同点只是里面显示的数据的不同,而在这类型的ListView中,item的类型则有两种,第一种是要展示本人上传的消息,位于屏幕的右方,而另一种是展示对方上传的信息,位于屏幕的左方;另外,在ListView的Adapter中进行item复用时也要考虑这两种类型如何做到不会错乱地复用。
要实现这种效果其实很简单,只需在Adapter上下点功夫就行了:
首先定义信息的实体类,其中有信息的类型(本人发的,对方发的)、信息的内容还有发送此信息的时间:
/**
*信息实体
*/
public class Message {
public final static int TYPE_SEND = 0; //本人发的消息
public final static int TYPE_RESPONSE = 1; //对方发的消息
private int type;
private String content;
private String time;
public Message(int type,String content)
{
this.type = type;
this.content = content;
this.time = DateFormat.getTimeInstance().format(new Date(System.currentTimeMillis()));
}
public int getType() {
return type;
}
public String getContent() {
return content;
}
public String getTime() {
return time;
}