youlu总结v1

来源:互联网 发布:java开发工程师中心 编辑:程序博客网 时间:2024/05/16 13:49
一:框架搭建
splashActivity 友录logo加载,动画监听,跳转页面
MainActivity 继承了FragmentActivity 实现viewpage中动态添加fragment,同时实现了联动效果。
MyFragmentAdapter 继承FragmentPagerAdapter 把传入的fragment放入到List中实现适配。 


二:功能模块
2.1联系人
BaseFragment 继承了Fragment并配置了统一管理actionbar的方法。
ContactsFragment 继承了BaseFragment,里面布置了GridView用于显示联系人信息,并实现了联系人的增加和修改。
MyBaseAdapter 继承了BaseAdapter,封装了getView的抽象方法和getData和removeData的方法用于数据修改后刷新数据
ContactAdapter 主要是对读取的Contact对象进行适配
Contact 联系人实体
ContactManager
LruCache缓存联系人头像图片
SparseArray缓存读取到的联系人信息
getContacts方法:
1.查找Contact表,获取id和头像id
获取联系人信息>获得访问内容提供者的内容解析器>遍历游标>创建一个联系人对象(缓存有则直接用)>封装数据

2.根据id查找DATA表,获取name,phone,email,address
3.封装Contact放入缓存后返回
getBitmapByPhotoid方法:
1.传入联系人id,查找data表的data15获取二进制图片,操作表的uri为Data.CONTENT_URI;
2.BitmapFactory转换为bitmap对象返回并加入缓存;
deleteContact方法,操作RawContacts和data的删除,才能完全删除联系人;
getCalllogs方法,查找Calls,封装calllog并返回
deleteCalllog,从表中删除calllog
formatDate和dayDiff用于格式化时间;
getContactByNumber根据联人的电话号码查联系人的信息 [Android]通过PhoneLookup读取所有电话号码
>>>
BitmapManager对联系人的头像进行处理转成圆形的
1.设置头像高和宽取小设置半径
2.创建Bitmap,Canvas(bitmap),Paint对象
3.设置Paint毛边,颜色,canvas画圆
4.Paint设置模式setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
5.paint描边

2.2通话记录
CalllogFragment 继承了BaseFragment,用listview显示通话记录信息,此外,未添加联系人显示红色字体,并出现警告图标,长按删除记录,先删除表在调用BaseAdapter的removedata刷新数据,数据的通过ContactManager.getCalllogs获取
CalllogAdapter 对传入的Calllog进行适配;calllong是通话记录实体类,封装了编号,姓名,电话号码,通话时间,通话类型和头像id等私有数据;
DialogManager 管理删除,修改等窗口
showAddContactDialog,showContactDetailDialog,showDeleteContactDialog>>联系人的窗口操作
showDeleteCalllogDialog>>通话记录的窗口
showDeleteConversationDialog>>会话窗口

2.3电话拨号
DailpadFragment 
initialDailPad方法:动态初始化拨号键盘
1.获取DisplayMetrics对象,并通过getWindowManager().getDefaultDisplay().getMetrics封装
2.设置拨号键的宽和高
3.遍历要初始化的key,通过LayoutParams设置控件高和宽度,如果当前控件的循环变量不能被3整除要设置右对齐i,大于等于3则下对齐(i-2)
4.添加到对应view并未每个按键设置监听
5.标题输入数字长的为3和8时要做“-”处理
6.MediaManager.playTone设置按键音
7.intent.ACTION_CALL startActivity 拨打电话
MediaManager 音效管理 SoundPool 加载完音乐自动播放

2.4短信会话


SMSFragment 用listview展示短信会话,点击后进入短信聊天
Conversation 会话实体类,封装了thread_id(标识会话),name,address,body,date,formatDate,photoid,read。
ConversationAdapter 对传入的conversation进行适配,未读短信显示标签


2.5短信聊天
ChatActivity
SMSManager 会话表的uri,管理短信的uri,收件箱的管理的uri和发件箱的uri
showSMS:查看SMS
getConversations:获取conversation
deleteConversation:会话的删除操作
updateConversation:更新会话的状态
getSMSes:获取List<SMS>:格式化时间
onRecieveMessage 对bundle中封装的短信内容进行拆解
saveReciveMessage 存储短信
sendSMS 发送短信
saveSendSMS 将发出的短信保存在发件箱中
formatChatDate格式化时间
MyReceiver 继承 BroadcastReceiver,收到短信后回调onrecive方法,
注册广播接收器>将过滤器的优先级足够高,使当前应用优先接收到广播>拦截短信>in:将短信保存到收件箱并忽略收到短信的(out:把发出的短信的内容存到发件箱中)>abortBroadcast()
0 0
原创粉丝点击