Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Socket IQ聊天軟件 之 聊天氣泡編碼步驟講解

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

編輯:關於Android編程

之前我們說到了關於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());
					//得到輸入的數據,並清空EditText
					chatContent=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);
	}
	@Override
	public void finish() {
		 unregisterReceiver(br);
		super.finish();
	}
	
	//廣播接收器
	public class MyBroadcastReceiver extends BroadcastReceiver {
		@Override
		public 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));
	}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved