首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 仿微信聊天界面,以及话音录制功能

2012-11-12 
android仿微信聊天界面,以及语音录制功能?本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI。1先看效

android 仿微信聊天界面,以及语音录制功能

?

本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI。

1先看效果图:


android  仿微信聊天界面,以及话音录制功能


android  仿微信聊天界面,以及话音录制功能
?
android  仿微信聊天界面,以及话音录制功能
?
android  仿微信聊天界面,以及话音录制功能
?
android  仿微信聊天界面,以及话音录制功能

第一:chat.xml设计

?

?

?

第二:语音录制类封装SoundMeter.java

?第四:自定义的显示适配器:

package com.example.voice_rcd;import java.util.List;import android.content.Context;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class ChatMsgViewAdapter extends BaseAdapter {public static interface IMsgViewType {int IMVT_COM_MSG = 0;int IMVT_TO_MSG = 1;}private static final String TAG = ChatMsgViewAdapter.class.getSimpleName();private List<ChatMsgEntity> coll;private Context ctx;private LayoutInflater mInflater;private MediaPlayer mMediaPlayer = new MediaPlayer();public ChatMsgViewAdapter(Context context, List<ChatMsgEntity> coll) {ctx = context;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;}public int getItemViewType(int position) {// TODO Auto-generated method stubChatMsgEntity entity = coll.get(position);if (entity.getMsgType()) {return IMsgViewType.IMVT_COM_MSG;} else {return IMsgViewType.IMVT_TO_MSG;}}public int getViewTypeCount() {// TODO Auto-generated method stubreturn 2;}public View getView(int position, View convertView, ViewGroup parent) {final 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.tvTime = (TextView) convertView.findViewById(R.id.tv_time);viewHolder.isComMsg = isComMsg;convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.tvSendTime.setText(entity.getDate());if (entity.getText().contains(".amr")) {viewHolder.tvContent.setText("");viewHolder.tvContent.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.chatto_voice_playing, 0);viewHolder.tvTime.setText(entity.getTime());} else {viewHolder.tvContent.setText(entity.getText());viewHolder.tvContent.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);viewHolder.tvTime.setText("");}viewHolder.tvContent.setOnClickListener(new OnClickListener() {public void onClick(View v) {if (entity.getText().contains(".amr")) {playMusic(android.os.Environment.getExternalStorageDirectory()+"/"+entity.getText()) ;}}});viewHolder.tvUserName.setText(entity.getName());return convertView;}static class ViewHolder {public TextView tvSendTime;public TextView tvUserName;public TextView tvContent;public TextView tvTime;public boolean isComMsg = true;}/** * @Description * @param name */private void playMusic(String name) {try {if (mMediaPlayer.isPlaying()) {mMediaPlayer.stop();}mMediaPlayer.reset();mMediaPlayer.setDataSource(name);mMediaPlayer.prepare();mMediaPlayer.start();mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {public void onCompletion(MediaPlayer mp) {}});} catch (Exception e) {e.printStackTrace();}}private void stop() {}}
?

附上代码,希望有需要的可以下载研究完善。

热点排行