- 浏览: 87575 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 ...
相关推荐
从官方预览包里提取的Android6.0 ApiDemos.apk,方便安装在真机上查看实例的实际效果。
**Android 6.0 API Demos详解** Android 6.0 API Demos 是一个官方提供的示例代码集合,它展示了Android 6.0 (Marshmallow) SDK中的各种API功能和用法。这些示例旨在帮助开发者更好地理解和学习如何在实际应用中...
《Android ApiDemos apk:深入理解Android应用开发的实践指南》 Android ApiDemos apk是Android开发者们熟悉的一个示例程序,它包含了Android SDK中的各种API功能演示,为开发者提供了丰富的学习资源。这个应用程序...
Android 5.1的ApiDemos安装包
《深入探索Android API Demos:最新实践与技术解析》 Android API Demos是Google官方提供的一款用于展示Android SDK中各种API功能和用法的应用程序,它涵盖了从基础控件到高级特性的全方位示例,是开发者学习...
标题“jdk-8u202-linux-x64-demos.tar.gz”指的是Java Development Kit (JDK) 的一个特定版本,适用于Linux操作系统且基于x64(64位)架构的示例程序集。这个压缩包是Oracle JDK 8 Update 202的组成部分,包含了各种...
文件名称: jdk-8u231-solaris-x64-demos.tar.gz 文件大小: 8.43 MB (8,846,115 字节) MD5: 3b62803c4e86b40f1a83b68be7bce224 SHA1: 3aba5de2157163b949179a5b654494da05b4da9c SHA256: 774c5d41a1422d22d026eaaa39...
lucene-demos-3.0.2.jar 搜索引擎
wxPython2.8-win32-docs-demos-2.8.12.1 wxPython2.8-win32-docs-demos-2.8.12.1 wxPython2.8-win32-docs-demos-2.8.12.1 wxPython2.8-win32-docs-demos-2.8.12.1 wxPython2.8-win32-docs-demos-2.8.12.1 wxPython...
API Demos 是 Google 为了 Android 开发者所提供的一个 Android API 合集,其中包含了很多的 API 范例,同时遵循了良好的代码规范,是一个值得开发者研究和学习的典型。android的ApiDemos,需要解压缩后使用。
**Android ApiDemos详解** `Android ApiDemos` 是Android系统提供的一款官方示例程序,它集合了Android SDK中的各种API用法,是开发者学习和理解Android开发的关键资源。这个项目旨在通过实例代码来演示Android API...
ApiDemos是Android平台提供的一款示例应用,它包含了Android SDK中的各种API功能展示,对于开发者来说,这是一个非常宝贵的资源库,可以帮助我们深入理解和学习Android系统的API用法。本文将详细介绍ApiDemos中的...
《Android API Demos详解》 Android API Demos是一款由谷歌官方提供的开源项目,它包含了大量Android SDK中的API示例代码,旨在帮助开发者更好地理解和学习如何在实际应用中使用Android的各种功能和API。该项目覆盖...
《Android API 19 ApiDemos详解》 在Android开发领域,API Demos是一个非常重要的学习资源,它包含了Android SDK中的各种API示例代码,帮助开发者深入理解和掌握Android平台的功能特性。本文将针对API Level 19...
**Android ApiDemos详解** ApiDemos是Android官方提供的一款示例应用,它包含了Android SDK中的各种API功能演示,帮助开发者了解和学习Android系统提供的各种API接口和功能。这个"Android ApiDemos不报错版本"是...
This document will help explain some of the major changes in wxPython 2.6 since the 2.4 series and let you know what you need to do to adapt your programs to those changes. Be sure to also check in ...
在描述中提到的“demos:jdk-8u202-linux-arm32-vfp-hflt-demos.tar.gz”,进一步强调了这个压缩包的核心内容是Java 8的演示程序,它们是开发者了解和学习Java API、编程技术以及最佳实践的重要资源。 标签"jdk"、...
《Android 4.3 ApiDemos深度解析》 在Android操作系统的发展历程中,每个版本的更新都会带来新的特性和API,以提升用户体验和开发者的工作效率。Android 4.3(API级别18)是Android系统的一个重要里程碑,它引入了...
《Android ApiDemos不报错版本:探索与学习》 Android ApiDemos是Android平台上的一个官方示例项目,它为开发者提供了丰富的API演示,涵盖了Android系统中的各种控件和功能,是学习和理解Android开发的宝贵资源。这...