【移动应用开发技术】Android中怎么实现一个微信聊天界面_第1页
【移动应用开发技术】Android中怎么实现一个微信聊天界面_第2页
【移动应用开发技术】Android中怎么实现一个微信聊天界面_第3页
【移动应用开发技术】Android中怎么实现一个微信聊天界面_第4页
【移动应用开发技术】Android中怎么实现一个微信聊天界面_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android中怎么实现一个微信聊天界面

今天就跟大家聊聊有关Android中怎么实现一个微信聊天界面,可能很多人都不太了解,为了让大家更加了解,在下给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目的主体结构:下面是Activity的代码:package

com.way.demo;

import

java.text.SimpleDateFormat;

import

java.util.ArrayList;

import

java.util.Date;

import

java.util.List;

import

android.app.Activity;

import

android.os.Bundle;

import

android.view.View;

import

android.view.View.OnClickListener;

import

android.widget.Button;

import

android.widget.EditText;

import

android.widget.ListView;

/**

*

@author

way

*/

public

class

WeixinChatDemoActivity

extends

Activity

implements

OnClickListener

{

private

Button

mBtnSend;//

发送btn

private

Button

mBtnBack;//

返回btn

private

EditText

mEditTextContent;

private

ListView

mListView;

private

ChatMsgViewAdapter

mAdapter;//

消息视图的Adapter

private

List<ChatMsgEntity>

mDataArrays

=

new

ArrayList<ChatMsgEntity>();//

消息对象数组

public

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

initView();//

初始化view

initData();//

初始化数据

mListView.setSelection(mAdapter.getCount()

-

1);

}

/**

*

初始化view

*/

public

void

initView()

{

mListView

=

(ListView)

findViewById(R.id.listview);

mBtnSend

=

(Button)

findViewById(R.id.btn_send);

mBtnSend.setOnClickListener(this);

mBtnBack

=

(Button)

findViewById(R.id.btn_back);

mBtnBack.setOnClickListener(this);

mEditTextContent

=

(EditText)

findViewById(R.id.et_sendmessage);

}

private

String[]

msgArray

=

new

String[]

{

"有大吗",

"有!你呢?",

"我也有",

"那上吧",

"打啊!你放大啊!",

"你TM咋不放大呢?留大抢人头啊?CAO!你个菜B",

"2B不解释",

"尼滚...",

"今晚去网吧包夜吧?",

"有毛片吗?",

"种子一大堆啊~还怕没片?",

"OK,搞起!!"

};

private

String[]

dataArray

=

new

String[]

{

"2012-09-22

18:00:02",

"2012-09-22

18:10:22",

"2012-09-22

18:11:24",

"2012-09-22

18:20:23",

"2012-09-22

18:30:31",

"2012-09-22

18:35:37",

"2012-09-22

18:40:13",

"2012-09-22

18:50:26",

"2012-09-22

18:52:57",

"2012-09-22

18:55:11",

"2012-09-22

18:56:45",

"2012-09-22

18:57:33",

};

private

final

static

int

COUNT

=

12;//

初始化数组总数

/**

*

模拟加载消息历史,实际开发可以从数据库中读出

*/

public

void

initData()

{

for

(int

i

=

0;

i

<

COUNT;

i++)

{

ChatMsgEntity

entity

=

new

ChatMsgEntity();

entity.setDate(dataArray[i]);

if

(i

%

2

==

0)

{

entity.setName("肖B");

entity.setMsgType(true);//

收到的消息

}

else

{

entity.setName("必败");

entity.setMsgType(false);//

自己发送的消息

}

entity.setMessage(msgArray[i]);

mDataArrays.add(entity);

}

mAdapter

=

new

ChatMsgViewAdapter(this,

mDataArrays);

mListView.setAdapter(mAdapter);

}

@Override

public

void

onClick(View

v)

{

switch

(v.getId())

{

case

R.id.btn_send://

发送按钮点击事件

send();

break;

case

R.id.btn_back://

返回按钮点击事件

finish();//

结束,实际开发中,可以返回主界面

break;

}

}

/**

*

发送消息

*/

private

void

send()

{

String

contString

=

mEditTextContent.getText().toString();

if

(contString.length()

>

0)

{

ChatMsgEntity

entity

=

new

ChatMsgEntity();

entity.setName("必败");

entity.setDate(getDate());

entity.setMessage(contString);

entity.setMsgType(false);

mDataArrays.add(entity);

mAdapter.notifyDataSetChanged();//

通知ListView,数据已发生改变

mEditTextContent.setText("");//

清空编辑框数据

mListView.setSelection(mListView.getCount()

-

1);//

发送一条消息时,ListView显示选择最后一项

}

}

/**

*

发送消息时,获取当前事件

*

*

@return

当前时间

*/

private

String

getDate()

{

SimpleDateFormat

format

=

new

SimpleDateFormat("yyyy-MM-dd

hh:mm:ss");

return

format.format(new

Date());

}

}ListView的代码:package

com.way.demo;

import

java.util.List;

import

android.content.Context;

import

android.view.LayoutInflater;

import

android.view.View;

import

android.view.ViewGroup;

import

android.widget.BaseAdapter;

import

android.widget.TextView;

/**

*

消息ListView的Adapter

*

*

@author

way

*/

public

class

ChatMsgViewAdapter

extends

BaseAdapter

{

public

static

interface

IMsgViewType

{

int

IMVT_COM_MSG

=

0;//

收到对方的消息

int

IMVT_TO_MSG

=

1;//

自己发送出去的消息

}

private

static

final

int

ITEMCOUNT

=

2;//

消息类型的总数

private

List<ChatMsgEntity>

coll;//

消息对象数组

private

LayoutInflater

mInflater;

public

ChatMsgViewAdapter(Context

context,

List<ChatMsgEntity>

coll)

{

this.coll

=

coll;

mInflater

=

LayoutInflater.from(context);

}

public

int

getCount()

{

return

coll.size();

}

public

Object

getItem(int

position)

{

return

coll.get(position);

}

public

long

getItemId(int

position)

{

return

position;

}

/**

*

得到Item的类型,是对方发过来的消息,还是自己发送出去的

*/

public

int

getItemViewType(int

position)

{

ChatMsgEntity

entity

=

coll.get(position);

if

(entity.getMsgType())

{//收到的消息

return

IMsgViewType.IMVT_COM_MSG;

}

else

{//自己发送的消息

return

IMsgViewType.IMVT_TO_MSG;

}

}

/**

*

Item类型的总数

*/

public

int

getViewTypeCount()

{

return

ITEMCOUNT;

}

public

View

getView(int

position,

View

convertView,

ViewGroup

parent)

{

ChatMsgEntity

entity

=

coll.get(position);

boolean

isComMsg

=

entity.getMsgType();

ViewHolder

viewHolder

=

null;

if

(convertView

==

null)

{

if

(isComMsg)

{

convertView

=

mInflater.inflate(

R.layout.chatting_item_msg_text_left,

null);

}

else

{

convertView

=

mInflater.inflate(

R.layout.chatting_item_msg_text_right,

null);

}

viewHolder

=

new

ViewHolder();

viewHolder.tvSendTime

=

(TextView)

convertView

.findViewById(R.id.tv_sendtime);

viewHolder.tvUserName

=

(TextView)

convertView

.findViewById(R.id.tv_username);

viewHolder.tvContent

=

(TextView)

convertView

.findViewById(R.id.tv_chatcontent);

viewHolder.isComMsg

=

isComMsg;

convertView.setTag(viewHolder);

}

else

{

viewHolder

=

(ViewHolder)

convertView.getTag();

}

viewHolder.tvSendTime.setText(entity.getDate());

viewHolder.tvUserName.setText(entity.getName());

viewHolder.tvContent.setText(entity.getMessage());

return

convertView;

}

static

class

ViewHolder

{

public

TextView

tvSendTime;

public

TextView

tvUserName;

public

TextView

tvContent;

public

boolean

isComMsg

=

true;

}

}消息对象的代码:package

com.way.demo;

/**

*

一个消息的JavaBean

*

*

@author

way

*

*/

public

class

ChatMsgEntity

{

private

String

name;//消息来自

private

String

date;//消息日期

private

String

message;//消息内容

private

boolean

isComMeg

=

true;//

是否为收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论