- 浏览: 87583 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
kazy:
挺有意思的
Java 泛型 内部链式存储机制 -
qingchengbuzai:
谢谢分享,但有个问题向请教下,用android:theme=& ...
Android 系统自带样式Android:theme
在com.example.android.aips包里有两个类文件:ApiDemos和ApiDemosApplicatio,这两个类主要用来构建整个Demo。
ApiDemos继承自android.app.ListActivity,显然是列表视图
ApiDemosApplicatio继承自android.app.Application,是用来控制App整体的
-------------------------------分割线--------------------------------
ListActivity 就是用来展示绑定了例如数组和数据游标(Cursor)数据的列表项,并且可以给项绑定事件。详细参考
http://developer.android.com/reference/android/app/ListActivity.html
Application 是一个用于获取全局应用状态的顶层类(Base Class) 复写此类可以定制application,本例用法如:<application android:name="ApiDemosApplication"
详情参考
http://developer.android.com/reference/android/app/Application.html
-------------------------------分割线--------------------------------
下面来看com.example.android.aips.ApiDemos类:
首先重写onCreate方法,代码如下:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** * 获取启动Intent * 启动Intent:任何Activity都是由Intent 激活,所以本人习惯叫‘启动 Intent’ */ Intent intent = getIntent(); /** * 获取Path 这个path在此项目中很重要,后面用它来填充Intent * 此Demo设计之巧也在这里,此DEMO有几层,例如打开是(App|Content…Views)然后在 * 打开App是(Activity|Alarm…Menu) 在打开Activity是(Animation…Wallpaper) * 这三层是依次连接的例如App—>ActivityAnimation 仔细看Animation这个 * Activity的android:label是App/Activity/Animation,到这里再结合代码大家估计 * 都明白此Demo怎么组织这三个层次的Activity的了:首次运行此Demo时path是空值,而 * 它的值则依次+“/…”而且最下面层一个是启动Activity 之前的是browseActivity 具* 体可细读getData方法 */ String path = intent.getStringExtra("com.example.android.apis.Path"); if (path == null) { path = ""; } /** * SimpleAdapter ListView的适配器 */ setListAdapter(new SimpleAdapter(this, getData(path),android.R.layout.simple_list_item_1, new String[] { "title" },new int[] { android.R.id.text1 })); /** * 快捷查找 */ getListView().setTextFilterEnabled(true); } protected List<Map<String, Object>> getData(String prefix) { List<Map<String, Object>> myData = new ArrayList<Map<String, Object>>(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE); PackageManager pm = getPackageManager(); List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0); if (null == list){ return myData; } String[] prefixPath;//前缀路径 String prefixWithSlash = prefix;//前缀带路径 if (prefix.equals("")) { prefixPath = null; } else { prefixPath = prefix.split("/"); prefixWithSlash = prefix + "/"; } int len = list.size(); Map<String, Boolean> entries = new HashMap<String, Boolean>(); for (int i = 0; i < len; i++) { ResolveInfo info = list.get(i); Log.i("TEST",info.toString()); CharSequence labelSeq = info.loadLabel(pm); String label = ((labelSeq != null) ? labelSeq.toString(): info.activityInfo.name); if (prefixWithSlash.length() == 0 || label.startsWith(prefixWithSlash)) { String[] labelPath = label.split("/"); String nextLabel = (prefixPath == null ? labelPath[0] : labelPath[prefixPath.length]); if ((prefixPath != null ? prefixPath.length : 0) == labelPath.length - 1) { addItem(myData,nextLabel,activityIntent(info.activityInfo.applicationInfo.packageName,info.activityInfo.name)); } else { if (entries.get(nextLabel) == null) { addItem(myData, nextLabel,browseIntent(prefix.equals("") ? nextLabel: prefix + "/" + nextLabel)); entries.put(nextLabel, true); } } } } Collections.sort(myData, sDisplayNameComparator); return myData; } /** * * @param data * @param name * @param intent */ protected void addItem(List<Map<String, Object>> data, String name,Intent intent) { //name = 'App' Map<String, Object> temp = new HashMap<String, Object>(); temp.put("title", name); temp.put("intent", intent); data.add(temp); } /** * * @param pkg 生成intent * @param componentName * @return */ protected Intent activityIntent(String pkg, String componentName) { Intent result = new Intent(); result.setClassName(pkg, componentName); return result; } /** * * @param path * @return */ protected Intent browseIntent(String path) { Intent result = new Intent(); result.setClass(this, ApiDemos.class); result.putExtra("com.xunlei.android.apis.Path", path); return result; } private final static Comparator<Map<String, Object>> sDisplayNameComparator = new Comparator<Map<String, Object>>() { private final Collator collator = Collator.getInstance(); public int compare(Map<String, Object> map1, Map<String, Object> map2) { return collator.compare(map1.get("title"), map2.get("title")); } }; @Override @SuppressWarnings("unchecked") protected void onListItemClick(ListView l, View v, int position, long id) { Map<String, Object> map = (Map<String, Object>) l.getItemAtPosition(position); Intent intent = (Intent) map.get("intent"); startActivity(intent); DialogPreference dp; Dialog d; }
发表评论
-
Android 获取特定Activity
2012-02-20 17:00 0Intent mainIntent = new Inten ... -
Android CURD联系人
2012-01-07 16:30 1187search.setOnClickListener(n ... -
Android 卸载程序
2011-10-18 21:02 763// 红色为自己的包名 packageURI = Uri ... -
Android:相对位置排版
2011-09-28 20:43 1583在XX之上/下/左/右 android:layout-abov ... -
Android Animation
2011-09-26 17:50 0显示Animation。Android SDK ... -
Android setDefaultKeyMode
2011-09-19 20:49 869http://blog.csdn.net/silencebur ... -
Android Activity重要性排序
2011-09-19 20:25 828在内存不足的时候,Andr ... -
Android 界面设计工具
2011-09-01 17:26 864Android界面设计工具 -
Android 系统自带样式Android:theme
2011-09-01 17:23 4781•android:theme="@android: ... -
Android 学习网站 不断更新
2011-09-01 11:03 710很多实例: http://www.anddev.org/vie ... -
Android 系统文件夹结构解析
2011-09-01 10:56 949\system\app 这个里面主 ... -
Android 权限中文说明
2011-09-01 10:54 692android.permission.ACCESS_CHEC ... -
Android 反编译
2011-08-31 20:04 953如果你是一个开发人员 当看到比较好的android应用 你肯定 ... -
Android 持久状态
2011-08-31 19:37 730当你编辑某Text视图时可能会打断当前编辑切换到另外的活动中, ... -
Android Intent用法汇总
2011-08-31 11:55 910//显示网页 Uri uri = Uri.parse(&qu ... -
Android 创建快捷方式
2011-08-31 11:11 1130<intent-filter> <acti ... -
Android Intent之0001
2011-08-30 21:04 659Intent intent = new Intent(Inte ... -
Android Notification
2011-08-30 20:55 970// Notification管理器 nm = (Not ... -
Android PendingIntent解读
2011-08-30 19:48 1912/** * A description of an Int ... -
Android 锁屏 DevicePolicyManager
2011-08-29 21:20 2614/** * Make the device ...
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。