国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android高仿微信聊天界面代碼分享

2020-04-11 10:52:08
字體:
來源:轉載
供稿:網友

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

先給大家展示下實現效果圖:

OK,下面我們來看一下整個小項目的主體結構:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇庆市| 石棉县| 永胜县| 阜城县| 鸡东县| 哈巴河县| 米泉市| 固镇县| 哈尔滨市| 会东县| 金坛市| 大洼县| 铁岭县| 曲麻莱县| 高陵县| 邵东县| 鄢陵县| 莲花县| 凤山市| 商水县| 台南市| 巫山县| 望都县| 南部县| 霞浦县| 淮阳县| 玉溪市| 武邑县| 衡水市| 崇礼县| 玉门市| 徐水县| 库尔勒市| 双辽市| 特克斯县| 皮山县| 安庆市| 潍坊市| 南皮县| 清苑县| 五家渠市|