




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面
今天就跟大家聊聊有關(guān)Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面,可能很多人都不太了解,為了讓大家更加了解,在下給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。項(xiàng)目的主體結(jié)構(gòu):下面是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;//
發(fā)送btn
private
Button
mBtnBack;//
返回btn
private
EditText
mEditTextContent;
private
ListView
mListView;
private
ChatMsgViewAdapter
mAdapter;//
消息視圖的Adapter
private
List<ChatMsgEntity>
mDataArrays
=
new
ArrayList<ChatMsgEntity>();//
消息對(duì)象數(shù)組
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();//
初始化view
initData();//
初始化數(shù)據(jù)
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!你個(gè)菜B",
"2B不解釋",
"尼滾...",
"今晚去網(wǎng)吧包夜吧?",
"有毛片嗎?",
"種子一大堆啊~還怕沒片?",
"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;//
初始化數(shù)組總數(shù)
/**
*
模擬加載消息歷史,實(shí)際開發(fā)可以從數(shù)據(jù)庫中讀出
*/
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("必?cái)?);
entity.setMsgType(false);//
自己發(fā)送的消息
}
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://
發(fā)送按鈕點(diǎn)擊事件
send();
break;
case
R.id.btn_back://
返回按鈕點(diǎn)擊事件
finish();//
結(jié)束,實(shí)際開發(fā)中,可以返回主界面
break;
}
}
/**
*
發(fā)送消息
*/
private
void
send()
{
String
contString
=
mEditTextContent.getText().toString();
if
(contString.length()
>
0)
{
ChatMsgEntity
entity
=
new
ChatMsgEntity();
entity.setName("必?cái)?);
entity.setDate(getDate());
entity.setMessage(contString);
entity.setMsgType(false);
mDataArrays.add(entity);
mAdapter.notifyDataSetChanged();//
通知ListView,數(shù)據(jù)已發(fā)生改變
mEditTextContent.setText("");//
清空編輯框數(shù)據(jù)
mListView.setSelection(mListView.getCount()
-
1);//
發(fā)送一條消息時(shí),ListView顯示選擇最后一項(xiàng)
}
}
/**
*
發(fā)送消息時(shí),獲取當(dāng)前事件
*
*
@return
當(dāng)前時(shí)間
*/
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;//
收到對(duì)方的消息
int
IMVT_TO_MSG
=
1;//
自己發(fā)送出去的消息
}
private
static
final
int
ITEMCOUNT
=
2;//
消息類型的總數(shù)
private
List<ChatMsgEntity>
coll;//
消息對(duì)象數(shù)組
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的類型,是對(duì)方發(fā)過來的消息,還是自己發(fā)送出去的
*/
public
int
getItemViewType(int
position)
{
ChatMsgEntity
entity
=
coll.get(position);
if
(entity.getMsgType())
{//收到的消息
return
IMsgViewType.IMVT_COM_MSG;
}
else
{//自己發(fā)送的消息
return
IMsgViewType.IMVT_TO_MSG;
}
}
/**
*
Item類型的總數(shù)
*/
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;
}
}消息對(duì)象的代碼:package
com.way.demo;
/**
*
一個(gè)消息的JavaBean
*
*
@author
way
*
*/
public
class
ChatMsgEntity
{
private
String
name;//消息來自
private
String
date;//消息日期
private
String
message;//消息內(nèi)容
private
boolean
isComMeg
=
true;//
是否為收
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司職工餐廳用工合同范本
- 勞動(dòng)糾紛解除合同范本
- 公司聘用合同范本英語
- 出地轉(zhuǎn)讓合同范本
- 協(xié)會(huì)招商服務(wù)合同范本
- 醫(yī)院廢品合同范本
- 協(xié)議解除銷售合同范本
- 醫(yī)院融資合同范本
- 勞動(dòng)建筑合同范本
- 住宿方艙租賃合同范本
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 第7課互聯(lián)網(wǎng)應(yīng)用協(xié)議 課件 2023-2024學(xué)年浙教版(2023)初中信息技術(shù)七年級(jí)上冊(cè)
- 特殊問題學(xué)生記錄表
- 踝關(guān)節(jié)骨性關(guān)節(jié)炎課件整理
- 中藥功效快快記憶法(完整版)
- 01S201室外消火栓安裝圖集
- 電機(jī)與電氣控制技術(shù)PPT完整全套教學(xué)課件
- 高處作業(yè)安全經(jīng)驗(yàn)分享
- 中國音樂學(xué)院音樂基礎(chǔ)知識(shí)(四級(jí))(基本樂科)備考試題庫(含答案)
- 裝飾材料復(fù)試清單
- 有限公司事業(yè)合伙人管理辦法
評(píng)論
0/150
提交評(píng)論