1. Contacts 模块Fragment结构:
下图为联系人模块主要窗口中的Fragment类图:
从类图中可以看出,联系人大部分原生的列表界面(主界面,多选界面等,余下Fragment未列出),其中的Fragment都继承自ContactEntryListFragment,,而基类
ContactEntryListFragment<T extends ContactEntryListAdapter>
实现了下面五个接口:
OnFocusChangeListener //监听焦点变化;
OnTouchListener //监听触摸时间;
LoaderManager.LoaderCallbacks //返回LoaderManager中加载的数据;
OnScrollListener //监听ListView滚动状态;
OnItemClickListener //监听ListView Item点击事件。
mListView.setOnFocusChangeListener(this);
mListView.setOnTouchListener(this);
mListView.setOnItemClickListener(this);
mListView.setOnScrollListener(this);
(1). OnFocusChangeListener:
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (view == mListView && hasFocus) {
hideSoftKeyboard();
}
}
(2). OnTouchListener:
@Override
public boolean onTouch(View view, MotionEvent event) {
if (view == mListView) {
hideSoftKeyboard();
}
return false;
}
从源码中可以看出,当焦点或者触摸事件到ListView中时,会做隐藏软键盘的操作。
(3). OnItemClickListener:
protected abstract void onItemClick(int position, long id);
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
hideSoftKeyboard();
int adjPosition = position - mListView.getHeaderViewsCount();
if (adjPosition >= 0) {
onItemClick(adjPosition, id);
}
}
当点击ListView item时触发该方法,从而调用抽象方法onItemClick(position, id);子类中不需要再去监听OnItemClickListener,只需要重写该方法即可,
(4). OnScrollListener:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
}

本文详细解析了Android联系人应用中Contacts模块的主要窗口Fragment结构,包括其继承关系、实现的接口及其功能,如焦点变化处理、触摸事件响应、列表项点击事件、滚动状态监听等,并介绍了不同类型的Fragment在联系人多选界面中的作用,以及如何根据不同Intent action启动对应的Fragment进行特定操作。
最低0.47元/天 解锁文章
:Contacts模块Fargment结构&spm=1001.2101.3001.5002&articleId=48810909&d=1&t=3&u=7126a1391152466080593d4c40ec7851)
1258

被折叠的 条评论
为什么被折叠?



