android Settings入门
来源:互联网 发布:大数据呼叫中心 编辑:程序博客网 时间:2024/06/03 17:41
转载自:http://www.cnblogs.com/nan-jing/archive/2013/05/20/3088280.html
分析下settings的启动过程。版本是4.0的。在Launcher的public boolean onCreateOptionsMenu(Menu menu) 设置了如何启动settings. 就是发送个Intent.
Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
进入了app/Settings onCreate--->super.onCreate(PreferenceAcrtivity)-->setContentView(com.android.internal.R.layout.preference_list_content);
这句是布置了画面。然后会回调public void onContentChanged()获取了listView的对象。然后继续往下进入了--》
onBuildHeaders(mHeaders);这个东西是关键,这个实际叫到了Settings->onBuildHeaders 这个函数会解释xml 也就是画面文件了。loadHeadersFromResource(R.xml.settings_headers, headers);这个东西就是在解释xml文件,苏州qisda, 臧春杰 如何解释xml呢?呵呵。这个有固定格式的 这里也是用到了Adatper, private static class HeaderAdapter extends ArrayAdapter<Header>, 既然是adapter, 哪肯定都是前台显示和数据源关联起来,前台就是listview.哪真正的数据就是解释的xml存放到了arrayList里了。也就是mHeaders,
target.add(header); 继续从PreferenceActivity onCreate往下走,到了else if (mHeaders.size() > 0) {
setListAdapter(new HeaderAdapter(this, mHeaders));
这就是把刚才的数据源绑定到了Adapter, 已被listview借口转换。这样就可以通过getView返回了,当时这里都是使用了tag 加判断重用。一贯的做饭,nancy很清楚的。
同时listView 注册了listener mList.setOnItemClickListener(mOnClickListener);
private AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
onListItemClick((ListView)parent, v, position, id);
}
};
当用户touch的时候,在settings里告诉系统做什么。
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id); //苏州 佳世达 臧春杰
if (mAdapter != null) {
Object item = mAdapter.getItem(position);
if (item instanceof Header) onHeaderClick((Header) item, position);
}
}
最后进入到了settings-->onHeaderClick 做处理,当然叫到了preferenceActivity的 onHeaderClick 如果用户指定了fragement. 哪就
startWithFragment(header.fragment, header.fragmentArguments, null, 0,
titleRes, shortTitleRes);
如果用户没指定,就直接启动else if (header.intent != null) {
startActivity(header.intent);
}
以上就是settings启动过程。 当然后续还会有进入fragement的动作。还有settings provider的数据库存储。先写到这里。让nancy浏览。
- android Settings入门
- android settings---------Settings.java
- Android Settings
- android - Settings
- android Settings项目建立
- android Settings项目安装
- Android Settings中的默认设置
- Android Settings中的默认设置
- Android Settings应用分析
- android 编译应用程序Settings
- Android Settings模块分析
- android settings的常见问题
- 安装android settings 应用
- mtk android settings
- android settings elipse 导入
- mtk android settings
- Android Settings 修改
- Android Settings模块分析
- 电视制式的一些区分
- 20130717-关键词拍卖竞价机制(方式)
- 数组的定义与初始化
- REST是什么
- private/protected constructor
- android Settings入门
- Android开发_代码中设置全屏和notitle
- VC用远程线程来实现程序自删除
- 杭电2544-最短路 -spfa算法求解最短路
- 寒门再难出贵子
- 转载一些学习centOS过程中会遇到的问题及解决办法
- C++编程思想 第二章对象的创建和使用
- 通过配置避免模糊查询 Like
- OpenGL场景保存为图片