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

ホームページ WeChat アプレット WeChatの開発 Androidの模倣性の高いWeChatチャットインターフェース例の詳細(xì)な説明

Androidの模倣性の高いWeChatチャットインターフェース例の詳細(xì)な説明

Mar 27, 2017 pm 02:09 PM

WeChat チャットが今とても人気があるのは、その美しいインターフェイスのせいでしょうか? WeChat のすべてのメッセージには非常に魅力的なバブルが付いています。実裝するのは非常に難しいように思えますが、実際はそうではありません。以下のエディターが実裝コードを共有します

まず、実裝レンダリングを示します:

Androidの模倣性の高いWeChatチャットインターフェース例の詳細(xì)な説明

OK、小さなプロジェクト全體の主な構(gòu)造を見てみましょう:

Androidの模倣性の高いWeChatチャットインターフェース例の詳細(xì)な説明

以下は、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咋不放大呢?留大搶人頭?。緾AO!你個菜B",?"2B不解釋",?"尼滾...",?
"今晚去網(wǎng)吧包夜吧?",?"有毛片嗎?",?"種子一大堆啊~還怕沒片?",?"OK,搞起?。?quot;?};?
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ù)?
/**?
*?模擬加載消息歷史,實際開發(fā)可以從數(shù)據(jù)庫中讀出?
*/?
public?void?initData()?{?
for?(int?i?=?0;?i??0)?{?
ChatMsgEntity?entity?=?new?ChatMsgEntity();?
entity.setName("必敗");?
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ā)送一條消息時,ListView顯示選擇最后一項?
}?
}?
/**?
*?發(fā)送消息時,獲取當(dāng)前事件?
*?
*?@return?當(dāng)前時間?
*/?
private?String?getDate()?{?
SimpleDateFormat?format?=?new?SimpleDateFormat("yyyy-MM-dd?hh:mm:ss");?
return?format.format(new?Date());?
}?
}</chatmsgentity></chatmsgentity>

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;?
}?
}</chatmsgentity></chatmsgentity>

Message オブジェクト コード:

package?com.way.demo;?
/**?
*?一個消息的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 の高度な WeChat チャット インターフェイス コードであることを願っています。みんなに役立つ。

以上がAndroidの模倣性の高いWeChatチャットインターフェース例の詳細(xì)な説明の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)