- 浏览: 42953 次
- 性别:
- 来自: 济南
最新评论
-
kensunhu:
正是我想要的。典型的app ui布局。谢谢!
android UI - 仿威信tab样式 -
007007jing:
bing_zz 写道兄弟加油!谢谢
android2.3 api demo 学习系列(7)--App/Activity/Hello World -
bing_zz:
兄弟加油!
android2.3 api demo 学习系列(7)--App/Activity/Hello World
android最有价值的参考资料莫过于sdk提供的apidemos,现在我们就开始一点一点的学习,本人水平有限,文章中出现错误请您指正。
sdk中得apidemos接近200个,设计到android的各个方面,首先先学习下android的开发人员如何将这200多个demo分类的。
1、首先在AndroidManifest.xml注册activity时附件以下intent-filter 例如
<activity android:name=".app.Animation" android:label="@string/activity_animation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.angie.apidemos.SAMPLE_CODE" /> </intent-filter> </activity>
2、在values/Strings.xml 声明该activity的label值 (这样声明是为了下面的list分类)
<string name="activity_animation">App/Activity/Animation</string>
3、最后在自己的activity里面处理list
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取传递进来的附加信息 Intent intent = getIntent(); String path = intent.getStringExtra("com.angie.apidemos.Path"); if (path == null) { path = ""; } //create list setListAdapter(new SimpleAdapter(this, getData(path), R.layout.mainlist, new String[] { "image", "title" }, new int[] { R.id.rowImage, R.id.rowTitle })); getListView().setTextFilterEnabled(true); } protected List getData(String prefix) { List<Map> myData = new ArrayList<Map>(); //获取符合条件的activity (包含其他应用程序符合条件的activity) Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(MyApplication.CATEGORY_SAMPLE_CODE); PackageManager pm = getPackageManager(); List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0); if (null == list) return myData; String[] prefixPath; if (prefix.equals("")) { prefixPath = null; } else { prefixPath = prefix.split("/"); } int len = list.size(); Map<String, Boolean> entries = new HashMap<String, Boolean>(); for (int i = 0; i < len; i++) { ResolveInfo info = list.get(i); CharSequence labelSeq = info.loadLabel(pm); String label = labelSeq != null ? labelSeq.toString() : info.activityInfo.name; if (prefix.length() == 0 || label.startsWith(prefix)) { 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), R.drawable.launcher); } else { if (entries.get(nextLabel) == null) { addItem(myData, nextLabel, browseIntent(prefix.equals("") ? nextLabel : prefix + "/" + nextLabel),R.drawable.list); entries.put(nextLabel, true); } } } } Collections.sort(myData, sDisplayNameComparator); return myData; } private final static Comparator<Map> sDisplayNameComparator = new Comparator<Map>() { private final Collator collator = Collator.getInstance(); public int compare(Map map1, Map map2) { return collator.compare(map1.get("title"), map2.get("title")); } }; protected Intent activityIntent(String pkg, String componentName) { Intent result = new Intent(); result.setClassName(pkg, componentName); return result; } protected Intent browseIntent(String path) { Intent result = new Intent(); result.setClass(this, ApiDemosStudyActivity.class); result.putExtra("com.angie.apidemos.Path", path); return result; } protected void addItem(List<Map> data, String name, Intent intent, int image) { Map<String, Object> temp = new HashMap<String, Object>(); temp.put("image", image); temp.put("title", name); temp.put("intent", intent); data.add(temp); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { Map map = (Map) l.getItemAtPosition(position); Intent intent = (Intent) map.get("intent"); startActivity(intent); }
4、上面的代码没有特别难理解的地方,故不再一一注释。其中用到的mainlist定义如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/rowImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:paddingLeft="6dip" android:src="@drawable/list" /> <TextView android:id="@+id/rowTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_vertical" android:paddingLeft="6dip" android:minHeight="?android:attr/listPreferredItemHeight"/> </LinearLayout>
注:代码中用到的drawable资源请自行导入,不再赘述。
其中用到的MyApplication类主要是想定义一个CATEGORY_SAMPLE_CODE,你也可以放弃这种方式 直接使用intent内部定义的CATEGORY。代码示例如下
public class MyApplication extends Application { public static final String CATEGORY_SAMPLE_CODE = "com.angie.apidemos.SAMPLE_CODE"; /* (non-Javadoc) * @see android.app.Application#onCreate() */ @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } }
效果图:
发表评论
-
android2.3 api demo 学习系列(23)--App/Notification/StatusBarNotification
2012-07-07 19:51 1401apidemo-StatusBarNotification里面 ... -
android2.3 api demo 学习系列(22)--App/Notification/Notifying Service Controller
2012-07-06 14:56 1725因为还没有看到service的demo,这里先不对servic ... -
android2.3 api demo 学习系列(21)--App/Notification/Incoming Message
2012-07-06 11:55 2521现在我们开始学习android的Status Bar Noti ... -
android2.3 api demo 学习系列(20)--App/Menu
2012-07-06 09:58 1159现在来学习下menu的相关 ... -
android2.3 api demo 学习系列(19)--App/Intent and Launcher Shortcuts
2012-07-06 09:36 1105第一个demo:Intent,根据指定的类型,枚举出所有符合条 ... -
android2.3 api demo 学习系列(18)--App/Dialog
2012-07-06 09:13 1022今天主要学习Dialog: 1、一般的dialog ... -
android2.3 api demo 学习系列(17)--App/Alarm/AlarmController and Alarm Service
2012-07-03 17:12 2199本次学习将apidemo中得两个demo:AlarmContr ... -
android2.3 api demo 学习系列(16)--App/Activity/Translucent and Blur activity
2012-07-03 11:47 1917本次同样是将apidemo中得两个demo合并起来学习:Tra ... -
android2.3 api demo 学习系列(15)--App/Activity/SetWallpaper
2012-07-03 11:00 1138本次示例我们整合了apidemo里面的两个demo:SetWa ... -
android2.3 api demo 学习系列(14)--App/Activity/Screen Orientation
2012-07-03 09:50 3134下面我们来学习下Screen Orientaiton的demo ... -
android2.3 api demo 学习系列(13)--App/Activity/Save & Restore
2012-07-02 17:29 1501前面文章android2.3 api demo 学习系 ... -
android2.3 api demo 学习系列(12)--App/Activity/Reorder Activitys
2012-07-02 16:45 1005Reorder Activitys Demo主要是实现打开ac ... -
android2.3 api demo 学习系列(11)--App/Activity/Redirection
2012-07-02 15:52 879APIDEMO里面的redirection示例本身并没有新技术 ... -
android2.3 api demo 学习系列(10)--App/Activity/RecevieResult
2012-07-02 14:48 1010在先前的文章 activity之间跳转传值 已经学习过这方面的 ... -
android2.3 api demo 学习系列(9)--App/Activity/QuickContactsDemo
2012-07-01 19:46 1009现在我们来学习如何使用Content Provider来访问a ... -
android2.3 api demo 学习系列(8)--App/Activity/Preference State
2012-07-01 19:45 921android保存数据有很多种方式,其中最简单的就是使用Sha ... -
android2.3 api demo 学习系列(7)--App/Activity/Hello World
2012-06-29 14:03 1113学习android当然不能少了HelloWorld,接下来我们 ... -
android2.3 api demo 学习系列(6)--App/Activity/ForwardActivity
2012-06-29 13:50 846本次学习activity的跳转 1、构建intent ... -
android2.3 api demo 学习系列(5)--App/Activity/Dialog
2012-06-29 11:42 1015前面我们已经学习了Custom Dialog 和 Custom ... -
android2.3 api demo 学习系列(4)--App/Activity/Custom Title
2012-06-29 11:26 1119android的标题栏默认是由android:lable定义的 ...
相关推荐
1. **UI与动画**:Android-15引入了新的UI设计元素和动画效果,API Demo展示了如何创建和控制自定义动画,以及如何利用Holo主题和Action Bar来提升应用的用户体验。 2. **硬件加速**:在ICS中,硬件加速成为默认...
**Android API 深度解析:Google 官方 API(Android-12 ApiDemo)** 在 Android 开发中,Google 官方API扮演着至关重要的角色。这些API为开发者提供了丰富的功能,使得应用程序能够实现从基础操作到复杂交互的一切...
**Android 2.3 API Demo 知识点详解** Android 2.3,也被称为 Gingerbread(姜饼),是Google在2010年推出的Android操作系统的一个重要版本。这个版本引入了许多新特性和改进,旨在优化用户体验和开发者工具。`...
总的来说,Google官方API(Android-10 ApiDemo)为开发者提供了一个全面的学习资源,帮助他们掌握Android 2.3.3的关键功能和API使用。通过深入研究这个项目,开发者可以提升自己的技能,创造出更加高效和用户友好的...
这个API Demo是学习和理解Android API如何工作的绝佳资源,对于新手和经验丰富的开发者来说都非常有价值。 首先,`Android-14`代表的是Android操作系统的第14个版本,即Android 4.0.x (Ice Cream Sandwich),这是一...
通过深入研究和实践Google官方API(Android-7 ApiDemo),开发者不仅可以了解到Android 7.0的新特性,还能学习到如何在实际项目中应用这些特性,提升应用的质量和用户体验。这个API Demo是Android开发者不可或缺的...
总结起来,Google官方API(Android-13 ApiDemo)是一个重要的学习资源,它涵盖了Android-13中的关键更新和API用法。通过深入研究ApiDemo,开发者不仅可以了解Android系统的最新特性,还能提高编程技能,创建出更优质...
通过学习和实践这个Android_API_Demo项目,开发者可以对Android开发有更深入的理解,并能熟练运用这些基础知识来构建自己的应用。这个项目不仅适合初学者,也适合有一定经验的开发者作为参考和复习之用。
通过研究Android 2.3的ApiDemo项目,开发者不仅可以学习到Android的基本概念,还能深入理解各个组件的工作原理和交互方式。虽然现在Android版本已经更新到了12,但ApiDemo中的很多基础知识和原理仍然适用,对于初学...
8080端口,http://localhost:8080/employee/save?id=1&name=""&sex=""&major=""的访问接口 数据库名必须为yunserver,表名employe,存在账号root admin
Android官方ApiDemo是Android开发者学习和掌握Android API的重要资源,它包含了Android系统各种API的功能示例,涵盖了从基础到高级的各种功能,为开发者提供了直观的代码实例。这个项目可以直接在Android Studio中...
《Android API Demo详解》 Android API Demo是一款专为开发者设计的示例应用,它详尽地展示了Android SDK中的各种API用法,涵盖了Android开发的各个方面,包括用户界面、网络通信、多媒体处理、传感器操作等。这个...
在Android开发领域,Apidemo是一个非常重要的学习资源,它包含了大量的示例代码,帮助开发者深入理解Android API的各种功能和用法。标题“学习Android Apidemo从这开始”表明我们将从基础开始,逐步深入地探索这个...
通过深入研究Android ApiDemo,开发者不仅可以理解Android API的工作原理,还能学习到最佳实践,这对于构建高质量的Android应用程序至关重要。对于初学者来说,这是一个非常宝贵的教育资源,可以帮助他们快速掌握...
"学习android 的sample apidemo"这个项目提供了一系列实例,旨在帮助开发者更好地理解和应用Android SDK中的各种API。这些示例覆盖了从基本的UI组件到复杂的网络通信、多媒体处理等各个方面,是初学者入门和资深...
### Android API Demo详解 #### 一、概述 本篇文章旨在为初学者提供一套全面而深入的Android API Demo解析,帮助大家更好地理解Android开发中的各种基础知识和技术细节。文章将按照给出的目录顺序,逐一分析每个...
Motorola的Android BT 4.0 Demo是一款展示如何在Android系统上利用BLE API进行应用开发的示例程序。该Demo主要目标是让开发者了解并掌握BLE通信的基本步骤,以便在自己的项目中实现类似功能。 首先,我们来解析...
API Demo 是一个专门用于展示 Android SDK 中各种 API 使用方法的示例项目。它包含了丰富的实例代码,帮助开发者更好地理解和学习 Android 的核心功能和组件。通过对 API Demo 的深入研究,我们可以掌握 Android ...
本文档是关于基于Android 2.3版本的API Demo解析,旨在帮助开发者更好地理解Android应用开发中的各种控件和技术点。通过一系列实例,详细介绍了如何使用Android SDK中的各个功能模块。 #### 二、主要内容概述 文档...