編輯:關於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)); }
Software License .box { overflow:hidden
問題來源之前在app中集成過微信支付,此種微信支付方式為app支付,即在我們自己的應用中嵌入微信支付SDK,由Native代碼調起微信支付。後來由於業務需要在我們app的
Android Studio目前已經成為開發Android的主要工具,用熟了可謂相當順手。作為開發者,調試並發現bug,進而解決,可是我們的看家本領。正所謂,工欲善其事必
Android 自定義view模板並實現點擊事件的回調主要的目的就是仿老版QQ的一個界面做一個模板。然後實現點擊事件的回調。先看效果圖:步驟如下: 1.在res/valu