Android Socket IQ聊天軟體 之 聊天氣泡編碼步驟講解

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   color   ar   os   java   

之前我們說到了關於IQ聊天軟體的區域網路聊天測試,今天給大夥說說氣泡的產生和編碼,這不是第三方的東西,是自己

開發的,需要整合布局和容器來實現,其實當你看到源碼後,就會覺得很簡單,不信你跟著我往下看

首先說說我編程的思想,我們在一個Activity裡要動態產生一個訊息列表,那ListView是必不可少的容器了,這是其一

其二,我們可以清楚的知道,“我”和好友的氣泡底色都是不同的,QQ的底色為:“我”為白底,好友“綠底”,不過這是以前老版本的,現在的新版本有自訂氣泡,種類很多,我們就不一一介紹了,所以我們需要定義兩個ListView Item 來填充ListView

其三,我們把布局檔案寫好後,剩下的就是載入訊息列表了,今天就著重說說氣泡的開發吧,然後大致講講氣泡訊息列表的載入


首先建立一個Activity,添加一個ListView,因為源碼都上傳了,這裡就不貼代碼了


分別定義 “我” 和 好友 的訊息氣泡布局檔案:


此為好友的訊息氣泡布局,布局源碼請到

源碼,附帶資料庫:http://download.csdn.net/detail/jspping/8067509

主布局是線性布局,在主布局下添加了一個頭像Imageview、一個發送時間Textview,嵌套了一個線性布局,給線性布局添加了一個背景圖片,也就是綠底色氣泡,線上性布局裡添加了一個好友訊息 TextView,顯示好友發送的訊息


我的氣泡:



氣泡即時動態載入核心代碼:

et_input=(EditText) findViewById(R.id.et_input);findViewById(R.id.ib_send).setOnClickListener(new OnClickListener(){public void onClick(View v) {myAccount=MoreActivity.me.getAccount();ObjectOutputStream oos;try {oos = new ObjectOutputStream//通過account找到該線程,從而得到OutputStream(ServerManager.getClientConServerThread(myAccount).getSocket().getOutputStream());//得到輸入的資料,並清空EditTextchatContent=et_input.getText().toString();et_input.setText("");//發送訊息IQMSG m=new IQMSG();m.setType(IQMSGResult.COM_MES);m.setSender(myAccount);m.setSenderNick(MoreActivity.me.getNick());m.setSenderAvatar(MoreActivity.me.getAvatar());m.setReceiver(chatAccount);m.setContent(chatContent);m.setSendTime(IQTime.geTimeNoS());oos.writeObject(m);//更新聊天內容updateChatView(new MessageEntity(MoreActivity.me.getAvatar(),chatContent,    IQTime.geTime(),    false));} catch (IOException e) {e.printStackTrace();}}}); //註冊廣播IntentFilter myIntentFilter = new IntentFilter();         myIntentFilter.addAction("engineer.jsp.iq.Client.mes");        br=new MyBroadcastReceiver();        registerReceiver(br, myIntentFilter);ManageActivity.addActiviy("MessageActivity", this);}@Overridepublic void finish() { unregisterReceiver(br);super.finish();}//廣播接收器public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String[] mes = intent.getStringArrayExtra("message");Log.i("MessageActivity", "資料:"+mes);    //更新聊天內容    updateChatView(new MessageEntity(    Integer.parseInt(mes[2]),    mes[3],    mes[4],    true));}}public void updateChatView(MessageEntity chatEntity){chatEntityList.add(chatEntity);chatListView=(ListView) findViewById(R.id.lv_chat);chatListView.setAdapter(new MessageAdapter(this,chatEntityList));}

有不懂得,請在本部落格留言,第一時間看到,第一時間解答!,謝謝,Engineer-Jsp撰~~

Android Socket IQ聊天軟體 之 聊天氣泡編碼步驟講解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.