国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah applet WeChat pembangunan WeChat 詳解Android高仿微信聊天界面實(shí)例

詳解Android高仿微信聊天界面實(shí)例

Mar 27, 2017 pm 02:09 PM

微信聊天現(xiàn)在非常火,是因其界面漂亮嗎,哈哈,也許吧。微信每條消息都帶有一個(gè)氣泡,非常迷人,看起來感覺實(shí)現(xiàn)起來非常難,其實(shí)并不難。下面小編給大家分享實(shí)現(xiàn)代碼

先給大家展示下實(shí)現(xiàn)效果圖:

詳解Android高仿微信聊天界面實(shí)例

OK,下面我們來看一下整個(gè)小項(xiàng)目的主體結(jié)構(gòu):

詳解Android高仿微信聊天界面實(shí)例

下面是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>();//?消息對象數(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)?quot;); 
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)?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());?
}?
}

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;//?自己發(fā)送出去的消息?
}?
private?static?final?int?ITEMCOUNT?=?2;//?消息類型的總數(shù)?
private?List<ChatMsgEntity>?coll;//?消息對象數(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的類型,是對方發(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;?
}?
}

消息對象的代碼:

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;//?是否為收到的消息?
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高仿微信聊天界面代碼分享,希望對大家有所幫助。

Atas ialah kandungan terperinci 詳解Android高仿微信聊天界面實(shí)例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276