【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)微信聊天界面_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論