微信聊天現(xiàn)在非常火,是因其介面漂亮嗎,哈哈,也許吧。微信每則訊息都帶有一個(gè)氣泡,非常迷人,看起來(lái)感覺(jué)實(shí)現(xiàn)起來(lái)非常難,其實(shí)並不難。以下小編給大家分享實(shí)作程式碼
先給大家展示下實(shí)現(xiàn)效果圖:
OK,下面我們來(lái)看看整個(gè)小專案的主體結(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)吧包夜吧?",?"有毛片嗎?",?"種子一大堆啊~還怕沒(méi)片?",?"OK,搞起?。?quot;?};? 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í)際開(kāi)發(fā)可以從數(shù)據(jù)庫(kù)中讀出? */? public?void?initData()?{? for?(int?i?=?0;?i??0)?{? ChatMsgEntity?entity?=?new?ChatMsgEntity();? entity.setName("必?cái)?quot;);? 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());? }? }</chatmsgentity></chatmsgentity>
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ā)過(guò)來(lái)的消息,還是自己發(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;? }? }</chatmsgentity></chatmsgentity>
訊息物件的程式碼:
package?com.way.demo;? /**? *?一個(gè)消息的JavaBean? *? *?@author?way? *? */? public?class?ChatMsgEntity?{? private?String?name;//消息來(lái)自? private?String?date;//消息日期? private?String?message;//消息內(nèi)容? private?boolean?isComMeg?=?true;//?是否為收到的消息? public?String?getName()?{? return?name;? }? public?void?setName(String?name)?{? this.name?=?name;? }? public?String?getDate()?{? return?date;? }? public?void?setDate(String?date)?{? this.date?=?date;? }? public?String?getMessage()?{? return?message;? }? public?void?setMessage(String?message)?{? this.message?=?message;? }? public?boolean?getMsgType()?{? return?isComMeg;? }? public?void?setMsgType(boolean?isComMsg)?{? isComMeg?=?isComMsg;? }? public?ChatMsgEntity()?{? }? public?ChatMsgEntity(String?name,?String?date,?String?text,?boolean?isComMsg)?{? super();? this.name?=?name;? this.date?=?date;? this.message?=?text;? this.isComMeg?=?isComMsg;? }? }
以上所述是小編給大家分享的Android高仿微信聊天介面程式碼分享,希望對(duì)大家有幫助。
以上是詳解Android高仿微信聊天介面實(shí)例的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章
Agnes Tachyon Build Guide |漂亮的德比志
2 週前
By Jack chen
Oguri Cap Build Guide |漂亮的德比志
2 週前
By Jack chen
Palia:Rasquellywag的Riches Quest演練
1 個(gè)月前
By DDD
峰:如何復(fù)興球員
3 週前
By DDD
Grass Wonder Build Guide |烏瑪媽媽漂亮的德比
1 週前
By Jack chen

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)
