위챗 애플릿 위챗 개발 Android 모방 위챗 채팅 인터페이스 예시에 대한 자세한 설명

Android 모방 위챗 채팅 인터페이스 예시에 대한 자세한 설명

Mar 27, 2017 pm 02:09 PM

지금 위챗 채팅이 인기가 많은 이유는 인터페이스가 아름다워서일까요? WeChat의 모든 메시지에는 거품이 있는데 이는 구현하기가 매우 어려울 것 같지만 실제로는 그렇지 않습니다. 아래에서 편집자가 구현 코드를 공유합니다.

먼저 구현 렌더링을 보여드리겠습니다.

Android 모방 위챗 채팅 인터페이스 예시에 대한 자세한 설명

한 번 살펴보겠습니다. 전체 작은 프로젝트의 주요 구조:

Android 모방 위챗 채팅 인터페이스 예시에 대한 자세한 설명

다음은 활동 코드입니다:

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  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()); 
} 
}</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;// 自己发送出去的消息 
} 
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; 
} 
}</chatmsgentity></chatmsgentity>
로그인 후 복사

메시지 객체의 코드:

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 모방 위챗 채팅 인터페이스 코드입니다. . 모든 사람에게 도움이 되기를 바랍니다.

위 내용은 Android 모방 위챗 채팅 인터페이스 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

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 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)