
IM即时通讯项目
文章平均质量分 73
sadsadsadsadsazcAS
这个作者很懒,什么都没留下…
展开
-
01SplashActivity界面的完成
即时通讯项目基于环信的SDK,新建项目,导入环原创 2014-11-25 15:59:23 · 1421 阅读 · 0 评论 -
05登录界面的布局设计
要实现的布局如下:思路:整体使用LinearLayout布局,用户名和密码分别使用两个相对布局,最后的两个按钮使用线性布局。需要留意的是那个EditTxt的设计,他的背景是null的,然后下面实际上是一个View,高度为一个dp的View,代码如下:<LinearLayout xmlns:android="http://schemas.android.com/apk原创 2014-11-27 16:23:58 · 708 阅读 · 0 评论 -
02数据库的设计
新建domain包和db包,domain包下存放User实体类。代码如下:package com.dy.ustc.im.domain;import com.easemob.chat.EMContact;/** * * 用户信息封装 * * @author * */public class User extends EMContact { private int原创 2014-11-27 16:04:08 · 745 阅读 · 0 评论 -
04工具类判断网络是否可用的方法和全局Constant类
判断网络是否可用的方法:package com.dy.ustc.im.utils;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;/** * * 工具类 * * */public class CommonUti原创 2014-11-27 16:19:35 · 542 阅读 · 0 评论 -
06登录界面逻辑
需要在登录界面完成下面的功能。1.注册和登录按钮的响应的事件2.用户名改变时,EditText应该监听到,将用户名置为空;3.onCreate未加载(setContentView)之前,如果用户名和密码均存在,则直接登录到主界面。4.登录按钮点击的时候弹出AlertDialog,设置nickname.5.设置完nickname之后,通过startActivityForResul原创 2014-11-27 16:27:43 · 1572 阅读 · 0 评论 -
03全局类IMApplication添加操作联系人(好友)列表的方法和设置用户名和密码的方法
1.关于操作联系人(好友)列表:就是一个field和他的setter,getter:private Map contactList;public Map getContactList() { if (getUserName() != null && contactList == null) { UserDao dao = new UserDao(applicationCon原创 2014-11-27 16:14:19 · 676 阅读 · 0 评论 -
13聊天界面布局的完成
最终实现的效果:先看上面的怎么实现:分为三个部分,一是返回的按钮,二是中间聊天的用户名或者聊天的群名,三是删除按钮或者群详情的按钮。整体使用相对布局。<RelativeLayout android:id="@+id/top_bar" android:layout_width="match_parent"原创 2014-12-16 17:06:12 · 1074 阅读 · 0 评论 -
07注册界面和注册界面的逻辑
注册界面的UI和登录界面的类似,如下图:代码如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"原创 2014-12-01 14:59:38 · 1275 阅读 · 0 评论 -
54新建群聊逻辑的完成
需要实现的有:1.获取布局文件xml对应的实例: /** * 群名称 */ private EditText groupNameEditText; /** * * 对话框 */ private ProgressDialog progressDialog; /** * 群简介 * */ private EditText introduction原创 2015-01-07 09:08:53 · 871 阅读 · 0 评论 -
60BaseAdapter导致notifyDataSetChanged()无效的几个原因及处理方法
暂时只碰到这几个问题:一、ScrollView中嵌套ListView或GridView原因:两个的滚动监听冲突解决方法:重写ListView或GridViewpackage com.meritit.lottery.view; import android.content.Context; import android.util.AttributeSet原创 2015-01-07 15:04:00 · 791 阅读 · 0 评论 -
56新建群聊---选择联系人之item布局
实现后的效果图:唯一需要注意的是,当点击item的时候,CheckBox会被勾选上,所以此处禁用了他的点击事件。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" androi原创 2015-01-07 10:10:26 · 609 阅读 · 0 评论 -
57新建群聊---选择联系人逻辑的完成
最终实现的效果如下图:在查看群组详情的Activity中,会向本Activity传一个groupId,根据这个值是否为null来判断是否是新建群组。String groupId = getIntent().getStringExtra("groupId"); if (groupId == null) {// 创建群组 isCreatingNewGroup = true;原创 2015-01-07 11:05:02 · 1102 阅读 · 0 评论 -
51群聊的Adapter的实现
最终实现的效果:群聊的整体是ListView,在适配器中,他含有三种子View,一个是搜索框,一个是新建群组,还有一个是群组列表。真个Adapter继承自ArrayAdapter。这里重写的方法包括:1.getItemViewType@Override public int getItemViewType(int position) { if (position ==原创 2015-01-06 18:19:24 · 531 阅读 · 0 评论 -
52群聊的完成
1.从服务器获取所有的群列表,并设置adapter:grouplist = EMGroupManager.getInstance().getAllGroups(); groupListView = (ListView) findViewById(R.id.list); groupAdapter = new GroupAdapter(this, 1, grouplist); grou原创 2015-01-07 08:30:05 · 662 阅读 · 0 评论 -
55选择群聊联系人的布局
实现后的布局如下图:ListView的内容由于没有设置适配器,还没有出来,看下布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_par原创 2015-01-07 09:52:12 · 659 阅读 · 0 评论 -
58搜索公开的群聊的布局
实现后的效果图:代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f2原创 2015-01-07 11:33:53 · 551 阅读 · 0 评论 -
82photoview实现多点触控
PhotoView的github地址是:https://github.com/chrisbanes/PhotoView,在我的项目中,当用户发送图片后,点击图片后,进入查看大图片的页面,那么我希望在这个查看大图片的页面能够响应多点触控的事件。所以用到了这个控件。PhotoView的几个特征:Out of the box zooming, using multi-touch and原创 2015-01-26 15:55:27 · 777 阅读 · 0 评论 -
08主界面布局的实现和点击事件的添加
实现后的效果如图所示:底部导航加fragment,其中红色的7使用相对布局完成。布局代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainLayout" android:layout_width="match_pare原创 2014-12-01 16:05:47 · 684 阅读 · 0 评论 -
64ListView中item中有CheckBox带来的选择状态混乱的解决
如图:当选择第二个条目的时候,往下翻:看到下面有的居然自己勾上了:再网上翻,发现上面的有的也自己勾上了:第一次遇到这个问题(手机管家项目第一次遇到这个问题,这里是拿《第一行代码》复习了),感觉好奇怪,甚至感觉有点不可思议。但是静下来想想,不过是因为复用convertView带来的问题。解决方式:第一步:在bean中新增 一个fil原创 2015-01-07 18:10:34 · 1978 阅读 · 2 评论 -
53新建群聊布局的完成
整体实现的效果如下图:注意这里shape属性资源的使用:<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <stroke android:width="1dp" andr原创 2015-01-07 08:37:27 · 600 阅读 · 0 评论 -
59公开群聊列表的加载
记载公开群:package com.dystu.impro.activity;import java.util.List;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.text.Editable;import android原创 2015-01-07 14:32:30 · 522 阅读 · 0 评论 -
61自定义view--onMesure、MeasureSpec详解
转自:http://blog.youkuaiyun.com/mwj_88/article/details/41210373一、自定义view逻辑1、测量--onMesure():决定View的大小2、布局--onLayout():决定View在ViewGroup中的位置3、绘制--onDraw():如何绘制这个View第3步的onDraw系统已经封装的很好了,基本不用我们操心。现在讲讲第1转载 2015-01-07 15:12:13 · 709 阅读 · 0 评论 -
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed错误原因
情况1:你定义的字段为 not null而插入时对应的字段却没值。情况2:你定义的字段设定PRIMARY,而插入的值已经在表中存在。我的错误属于第一种:我在onCreate()方法中创建表的时候,指定了约束条件(not null),然后我在插入数据的时候,有字段为NULL,导致倒错。原创 2014-12-16 20:10:41 · 7277 阅读 · 0 评论 -
83Android实战技巧:深入解析AsyncTask
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小功能从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单,仅是在doInBackground中用HT转载 2015-01-26 16:00:29 · 612 阅读 · 0 评论 -
16发送位置的消息类型布局
完成后的布局如图:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="v原创 2014-12-18 16:19:26 · 540 阅读 · 0 评论 -
17收到文件消息类型的布局
实现后的效果如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="verti原创 2014-12-18 16:34:24 · 506 阅读 · 0 评论 -
18发送文件消息类型的布局
实现后的效果如图:包含的内容:文件的名字,大小,发送的时候,进度条,进度,对方是否已读了。这里用户的头像下面没有用户的名字原创 2014-12-18 16:43:25 · 470 阅读 · 0 评论 -
20接收文本的消息类型的布局实现
实现后的效果如下:发送文本的比接收文本的布局要复杂很多。首先在发送的时候,要显示一个圆形的进度条,然后发送失败有响应的ImageView,最后还有已读,未读的状态。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pare原创 2014-12-18 16:49:35 · 494 阅读 · 0 评论 -
21接收图片消息类型的布局实现
最后的效果如下:主要在布局中显示图片的时候,有个圆形的进度条和显示的进度。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"原创 2014-12-18 16:54:15 · 443 阅读 · 0 评论 -
22发送图片的消息类型的布局实现
实现后的如图:发送的时候有个圆形的进度条和进度,发送失败显示ImageView,对方读了这条消息,显示已读。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_h原创 2014-12-18 16:57:01 · 524 阅读 · 0 评论 -
23接收视频的消息类型布局的实现
效果:注意几点:显示的有大小,时长,以及类型是录像,缩略图:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"原创 2014-12-18 17:04:20 · 424 阅读 · 0 评论 -
62MeasureSpec介绍及使用详解
MeasureSpec的源码: /** * A MeasureSpec encapsulates the layout requirements passed from parent to child. * Each MeasureSpec represents a requirement for either the width or the height. *原创 2015-01-07 15:56:35 · 635 阅读 · 0 评论 -
63ScrollView嵌套ListView带来的问题以及解决方式
ScrollView嵌套ListView带来的问题的解决原创 2015-01-07 16:28:43 · 845 阅读 · 0 评论 -
67MainActivity接收新消息的提醒
实现后的效果:这个广播接收者主要用来在底部菜单上面显示未读的消息数目。/** * * 新消息广播接收者 * * @author * */ private class NewMessageBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(C原创 2015-01-09 10:22:33 · 832 阅读 · 0 评论 -
68MainActivity的消息回执
消息回执就是“已发送”,“已读”等等状态:/** * 消息回执BroadcastReceiver * * */ private BroadcastReceiver ackMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Inte原创 2015-01-09 10:50:16 · 820 阅读 · 0 评论 -
19接受文本的消息类型的布局
实现后的效果如下图:主要注意一点:当发送:http://www.baidu.com类的消息的时候,对方显示为超链接:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layo原创 2014-12-18 16:46:15 · 505 阅读 · 0 评论 -
14ImageView的background和src属性
今天做聊天界面自定义adapter的时候遇到的问题:background是指背景,src是指内容。之所以有这两个,是考虑到src如果是PNG格式等有透明属性的图片的话,就会在透明的地方显示出设置的background的背景,而不是黑色或者其他系统默认的填充色等。这样也是有助于美观的。background 就是背景没错呀 src 指的是 ImageVi原创 2014-12-18 15:06:36 · 561 阅读 · 0 评论 -
15收到位置消息的布局
实现后的效果图如图所示:布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientatio原创 2014-12-18 15:22:48 · 539 阅读 · 0 评论 -
69MainActivity的透传消息
官方文档的描述:发送透传消息透传消息能做什么:头像,昵称的更新等,就是不通知手机端,收到消息可以自定义处理的一种消息。透传消息发送格式EMMessage cmdMsg = EMMessage.createSendMessage(EMMessage.Type.CMD);//支持单聊和群聊,默认单聊,如果是群聊添加下面这行cmdMsg.setChatTyp原创 2015-01-09 11:01:13 · 1093 阅读 · 0 评论 -
65群组详情的布局(GridView和ScrollView一起使用的解决)
想要实现的效果如下:实现后:稍微有点复杂:看下整体的outline:其实也不是很复杂,中间的分割线使用的是TextView,高度为1dp,屏幕群消息的两个按钮一个不可见,退出群聊和解散群聊的原理一样,GridView是自定义,这样可以避免ScrollView和GridView一起使用带来的问题。原创 2015-01-08 11:36:41 · 709 阅读 · 0 评论