摘要:
2014-01-0711:18:08将百度空间里的东西移过来。1.Save contact我们前面已经写了四篇文章,做了大量的铺垫,总算到了这一步,见证奇迹的时刻终于到了。用户添加了所有需要添加的信息后,点击“Done”来保存新建好的联系人,我们就从用户点击“Done”Button开始分析。前面提到过,“Done”的处理事件是在ContactEditorActivity里面设置的,如下:1 View saveMenuItem = customActionBarView.findViewById(R.id.save_menu_item);2 saveMenuItem.setOnClickList 阅读全文
摘要:
2014-01-0710:46:30将百度空间里的东西移过来。在前面的文章中我们分析了UI的加载,其中提到了一个重要的对象:RawContactDeltaList mState,我前面说过这个对象很重要,和联系人保存有关,现在就分析一下联系人到底是怎么保存的。1.千里追踪mStateContactEditorFragment类bindEditorsForNewContact()方法中创建了一个RawContactDelta对象insert,代码如下: 1 private void bindEditorsForNewContact(AccountWithDataSet newAccount, 2 阅读全文
摘要:
2014-01-0710:23:22将百度空间里的东西移过来。5.KindSectionViewKindSectionView是何方神圣呢?它又是怎么怎么和一个DataKind,以及一个RawContactDelta绑定到一起的呢?继续看,进入KindSectionView,其实KindSectionView就是一个普通的自定义View,他的作用还真的就是将DataKind中包含的数据变成UI显示出来,那么这个View是什么呢?它有自己的xml文件:item_kind_section.xml: 1 7 8 11 12 17 18 25 26 ... 阅读全文
摘要:
2014-01-0709:54:13将百度空间里的东西移过来。本文从点击“添加联系人”Button开始,分析新建联系人页面UI是如何加载,以及新的联系人信息是如何保存的,借此,我们一探Phonebook复杂的自定义View的加载机制。1. 从前文分析我们知道,New Contact页面是随着帐号类型的不同,而显示不同的UI,这次我们以LocalAccountType为例来分析。在联系人列表页面最下方,有一个“Add” Button, 点击新建联系人,这个Button其实一个MenuItem,在ContactsListFragment里面,点击事件处理在onOptionsItemSelected 阅读全文
摘要:
2014-01-0617:18:291.Phonebook中新建/编辑联系人的UI不是用xml文件写的,它是随着帐号类型的改变来加载不同的UI,比如SIM联系人,只有Name、Phone Number,如果是USIM,或许还有第二个号码、Email,但是本地联系人除了包含这些,还有Nickname,Website等,所以帐号如何定义以及UI如何加载就变得很复杂。2.帐号类型(以AdnAccountType SIM帐号为例)继承关系:AdnAccountType.java -->BaseAccountType.java -->AccountType.java,在AccountType 阅读全文