- 浏览: 343610 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
努力吧飞翔:
...
[ExtJS] MVC应用架构示例 -
coolnight:
[Maven]Nexus 安装与配置 -
Kevin_jiang2011:
官网的文档写的不好。 简单的执行命令,又要重新下载一个ecli ...
jBPM5 入门 -
litterdeer:
好东西....
[ExtJS] MVC应用架构示例 -
basherone:
可以用,谢谢了
[ExtJS] MVC应用架构示例
AndroidManifest.xml
程序先检索
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
的 Activity组件,并根据 android:name="NotesList" 和 package="com.example.android.notepad" 找到 类完全限定路径 com.example.android.notepad.NotesList 类,初始Activity,执行
onCreate(Bundle savedInstanceState)方法.
NotesList.java
菜单分类:
上下文菜单: 不支持快捷方式和图标.
选项菜单: 图标菜单不支持check标记,且菜单标题紧凑显示.最多显示6个,其余显示为more.
子菜单: 不支持图标,不能嵌套子菜单.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.notepad"> <application android:icon="@drawable/app_notes" android:label="@string/app_name"> <provider android:name="NotePadProvider" android:authorities="com.google.provider.NotePad" /> <activity android:name="NotesList" android:label="@string/title_notes_list"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.PICK" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.GET_CONTENT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> </activity> <activity android:name="NoteEditor" android:theme="@android:style/Theme.Light" android:label="@string/title_note" android:screenOrientation="sensor" android:configChanges="keyboardHidden|orientation" > <!-- This filter says that we can view or edit the data of a single note --> <intent-filter android:label="@string/resolve_edit"> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <action android:name="com.android.notepad.action.EDIT_NOTE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> <!-- This filter says that we can create a new note inside of a directory of notes. --> <intent-filter> <action android:name="android.intent.action.INSERT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" /> </intent-filter> </activity> <activity android:name="TitleEditor" android:label="@string/title_edit_title" android:theme="@android:style/Theme.Dialog" android:windowSoftInputMode="stateVisible"> <!-- This activity implements an alternative action that can be performed on notes: editing their title. It can be used as a default operation if the user invokes this action, and is available as an alternative action for any note data. --> <intent-filter android:label="@string/resolve_title"> <!-- This is the action we perform. It is a custom action we define for our application, not a generic VIEW or EDIT action since we are not a general note viewer/editor. --> <action android:name="com.android.notepad.action.EDIT_TITLE" /> <!-- DEFAULT: execute if being directly invoked. --> <category android:name="android.intent.category.DEFAULT" /> <!-- ALTERNATIVE: show as an alternative action when the user is working with this type of data. --> <category android:name="android.intent.category.ALTERNATIVE" /> <!-- SELECTED_ALTERNATIVE: show as an alternative action the user can perform when selecting this type of data. --> <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> <!-- This is the data type we operate on. --> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /> </intent-filter> </activity> </application> </manifest>
程序先检索
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
的 Activity组件,并根据 android:name="NotesList" 和 package="com.example.android.notepad" 找到 类完全限定路径 com.example.android.notepad.NotesList 类,初始Activity,执行
onCreate(Bundle savedInstanceState)方法.
NotesList.java
package com.example.android.notepad; import com.example.android.notepad.NotePad.Notes; import android.app.ListActivity; import android.content.ComponentName; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleCursorAdapter; public class NotesList extends ListActivity { private static final String TAG = "NotesList"; // Menu item ids public static final int MENU_ITEM_DELETE = Menu.FIRST; //1 public static final int MENU_ITEM_INSERT = Menu.FIRST + 1; //2 /** * 数据库中感兴趣的列 */ private static final String[] PROJECTION = new String[] { Notes._ID, // 0 "_id" Notes.TITLE, // 1 "title" }; /** 标题列索引 */ private static final int COLUMN_INDEX_TITLE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* * public final void setDefaultKeyMode(int mode) * 设置按键处理快捷方式 */ setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT); /* * 创建一个Intent,如果没有数据则使用默认的内容提供商 */ Intent intent = getIntent(); if (intent.getData() == null) { intent.setData(Notes.CONTENT_URI); } /* * public ListView getListView() * 注册 createContextMenu 监听器 */ getListView().setOnCreateContextMenuListener(this); /* * 定义游标对象 * public final Cursor managedQuery(Uri uri * , String[] projection * , String selection * , String[] selectionArgs * , String sortOrder) * 执行一个查询,并将结果游标返回 * public Intent getIntent() * 返回调用此组件的 Intent. * projection: PROJECTION 列数组 * selection : where * selectionArgs : 参数 * sortOrder : 排序 * * 执行一个可管理的查询,并且Activity组件管理查询的关闭和重新查询. */ Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null, null, Notes.DEFAULT_SORT_ORDER); /* * 创建一个简单游标适配器, 绑定列与视图 * public SimpleCursorAdapter(Context context * , int layout * , Cursor c * , String[] from * , int[] to) * context : 包含ListView的组件 * layout : 包含to的布局文件 * c : 游标 * from : 列数组 * to : 视图id数组 * 映射从数据库到视图的日志条目 */ SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.noteslist_item, cursor, new String[] { Notes.TITLE }, new int[] { android.R.id.text1 }); /* * public void setListAdapter(ListAdapter adapter) * 为ListView提供游标 */ setListAdapter(adapter); } /* * 初始化标准选项菜单内容,只在每一次显示前调用. * 注意,它在onPrepareOptionsMenu之前调用. * 返回值为真,则显示菜单,否则不显示. */ @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // This is our one standard application action -- inserting a // new note into the list. menu.add(0, MENU_ITEM_INSERT, 0, R.string.menu_insert) .setShortcut('3', 'a') .setIcon(android.R.drawable.ic_menu_add); // Generate any additional actions that can be performed on the // overall list. In a normal install, there are no additional // actions found here, but this allows other applications to extend // our menu with their own actions. Intent intent = new Intent(null, getIntent().getData()); intent.addCategory(Intent.CATEGORY_ALTERNATIVE); menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, new ComponentName(this, NotesList.class), null, intent, 0, null); return true; } /* * 准备显示屏幕标准选项.每次菜单显示前调用.可以通过这个方法启用/禁止菜单项或动态修改菜单内容. * 默认根据Activity状态更新系统菜单项.引申类必须调用基类实现. * 返回值为真,则显示菜单,否则不显示. */ @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); final boolean haveItems = getListAdapter().getCount() > 0; // If there are any notes in the list (which implies that one of // them is selected), then we need to generate the actions that // can be performed on the current selection. This will be a combination // of our own specific actions along with any extensions that can be // found. if (haveItems) { // This is the selected item. Uri uri = ContentUris.withAppendedId(getIntent().getData(), getSelectedItemId()); // Build menu... always starts with the EDIT action... Intent[] specifics = new Intent[1]; specifics[0] = new Intent(Intent.ACTION_EDIT, uri); MenuItem[] items = new MenuItem[1]; // ... is followed by whatever other actions are available... Intent intent = new Intent(null, uri); intent.addCategory(Intent.CATEGORY_ALTERNATIVE); menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items); // Give a shortcut to the edit action. if (items[0] != null) { items[0].setShortcut('1', 'e'); } } else { menu.removeGroup(Menu.CATEGORY_ALTERNATIVE); } return true; } /* * 选项菜单的菜单项 单击回调 */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM_INSERT: // Launch activity to insert a new item startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData())); return true; } return super.onOptionsItemSelected(item); } /* * 每次显示上下文菜单前调用. */ @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return; } Cursor cursor = (Cursor) getListAdapter().getItem(info.position); if (cursor == null) { // For some reason the requested item isn't available, do nothing return; } // Setup the menu header menu.setHeaderTitle(cursor.getString(COLUMN_INDEX_TITLE)); // Add a menu item to delete the note menu.add(0, MENU_ITEM_DELETE, 0, R.string.menu_delete); } /* * 上下文菜单的菜单项单击回调 */ @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return false; } switch (item.getItemId()) { case MENU_ITEM_DELETE: { // Delete the note that the context menu is for Uri noteUri = ContentUris.withAppendedId(getIntent().getData(), info.id); getContentResolver().delete(noteUri, null, null); return true; } } return false; } /* * ListView 列表项单击事件回调 */ @Override protected void onListItemClick(ListView l, View v, int position, long id) { Uri uri = ContentUris.withAppendedId(getIntent().getData(), id); String action = getIntent().getAction(); if (Intent.ACTION_PICK.equals(action) || Intent.ACTION_GET_CONTENT.equals(action)) { // The caller is waiting for us to return a note selected by // the user. The have clicked on one, so return it now. setResult(RESULT_OK, new Intent().setData(uri)); } else { // Launch activity to view/edit the currently selected item startActivity(new Intent(Intent.ACTION_EDIT, uri)); } } }
菜单分类:
上下文菜单: 不支持快捷方式和图标.
选项菜单: 图标菜单不支持check标记,且菜单标题紧凑显示.最多显示6个,其余显示为more.
子菜单: 不支持图标,不能嵌套子菜单.
发表评论
-
使用phantom-limb 模拟Touch 事件
2012-04-14 22:15 21531 下载 phantom-limb.js 2. 使用 2. ... -
读取本地私有文件
2009-11-08 12:58 2336package tl.android.utils; ... -
Android 文件搜索引擎
2009-11-08 02:44 0手机文件管理: 1.文件备份 2.创建文件/文件夹 3.批量复 ... -
Android 后台服务
2009-11-06 23:48 3875后台服务:运行在后台,一般没有UI. 1.创建一个简单的服务 ... -
Android HTTP 服务
2009-11-06 21:23 6935使用 HTTP 服务: 1. Apache HttpClin ... -
Android 2D 动画
2009-11-05 22:08 17201.帧动画 AnimationDrawable 2.布局动 ... -
Android Intents
2009-11-05 14:37 2142Android Intent 是 Android 进 ... -
Android 自定义ContentProvider
2009-11-04 00:30 4949自定义 ContentProvider ----------- ... -
Android 安全模型
2009-10-30 20:09 2599Android 安全模型包括两个方面:部署和运行. 部署应用 ... -
Intent 初探
2009-10-29 18:36 1143Intent package android.conte ... -
Android 用户界面(User Interface)
2009-10-28 09:57 1774View 基类: 视图对象在屏幕特定矩形区域处理自己的尺寸,布 ... -
Android 应用程序开发基础
2009-10-28 08:42 13081. 每一个应用程序运行在一个独立的进程,每一个进程运行在一个 ... -
android emulator( android模拟器)
2009-10-24 18:28 4032Android Emulator ============== ... -
android AVDs mksdcard dx工具介绍
2009-10-24 01:30 4645引用android 工具是一个脚本文件,用于创建,管理AVDs ... -
adb (Android Debug Bridge) Android 调试桥
2009-10-24 00:47 3982Android Debug Bridge (adb) 是一个通 ... -
aapt 工具( Android Asset Packaging Tool )
2009-10-23 23:33 7720aapt (Android Asset Packaging T ... -
AIDL (Android Interface Definition Language) Android 接口定义语言
2009-10-23 10:29 3292AIDL (Android Interface Definit ... -
Dedexer:Dex文件反编译工具介绍
2009-10-23 05:47 11672Dedexer 项目主页: http://de ... -
Android 开发环境配置
2009-10-21 06:05 1440准备: 1.下载JDK1.6 2.下载Android SDK ...
相关推荐
标题中的“2011.09.23——— android sample之Notepad(context menu)”表明这是一个关于Android应用开发的示例项目,具体是针对Notepad应用的上下文菜单(Context Menu)功能的实践。在Android开发中,上下文菜单是...
"NotePad"是Android SDK中一个经典的示例应用,主要用于教授基本的数据库操作、UI设计以及活动(Activity)管理等Android开发核心概念。 首先,NotePad应用展示了如何创建一个简单的笔记管理应用。在这个应用中,...
在Android操作系统中,NotePad是经典的示例应用,用于展示基本的数据库操作、UI设计以及事件处理等核心功能。这个压缩包文件包含的就是NotePad应用的源代码,是学习Android开发的宝贵资料。通过分析和研究NotePad的...
在这个“android stdio 简易记事本notepad示例程序”中,我们将深入探讨如何利用Java语言和Android Studio来创建一个基本的记事本应用,该应用使用SQLite数据库进行数据存储,并支持用户对笔记进行添加、删除、查询...
【标题】"BASIC4Android写的NotePad范例"是一个基于BASIC4Android开发的简单记事本应用程序示例。这个应用展示了如何使用BASIC4Android这种编程语言来创建一个功能基本的记事本,类似于手机或计算机上的文本编辑器。...
总的来说,这个NotePad源码示例为初学者提供了理解Android应用开发的宝贵资源。通过它,你可以学习到如何使用SQLite、ContentProvider、Activity、Intent以及UI设计等多个关键概念,这些都是构建任何Android应用的...
这个项目提供了Android系统中基础记事本功能的实现,是开发者学习Android应用开发,尤其是UI设计、数据存储和基本功能实现的一个良好实践示例。 【描述】"android NotePad便签源码.rar"包含了完整的Android NotePad...
首先,Android应用通常使用Java或Kotlin语言编写,因此Notepad源码可能是这两种语言之一。如果使用Java,它会遵循MVC(模型-视图-控制器)架构模式,如果是Kotlin,可能会采用现代的Kotlin最佳实践,如协程和数据类...
标题中的“记事本 NotePad”指的是Android操作系统中内置的一款简单文本编辑器——NotePad。这个应用主要用于创建、查看和编辑纯文本文件,是初学者学习Android应用开发时经常会接触到的一个示例项目。 描述中提到...
四、使用示例 假设你正在处理一个大型web服务器的日志文件,想找出所有HTTP 500错误。你可以打开日志文件,然后使用AnalysePlugin的搜索功能,输入正则表达式"500",所有包含该错误代码的行都会被突出显示。进一步...
首先,"Notepad.zip"可能是一个简单的示例项目,通常包含了一个基础的文本编辑器应用源代码。这种类型的项目非常适合初学者用来学习Android应用的基本结构和开发流程。在Android Studio中打开这个压缩包,你可以看到...
【NotePad官方资源例子】是Android开发中的一个经典示例,主要展示了如何使用Java语言来构建一个简单的文本编辑器应用。这个例子对于初学者来说,是深入理解Android平台上的应用程序开发,尤其是用户界面(UI)设计...
记事本这是 Google SDK 示例 NotePad 的 AndroidStudio 重建版本一功能扩展如下1.增加标题显示2.添加笔记功能3.界面UI美观4. 更改事件的历史 二主界面增加计时器 在NoteEditor.java文件中的updateNote中添加...
【安卓开发-NotePad.zip】是一个与Android应用开发相关的压缩包,从名称来看,它可能包含了一个名为"NotePad"的示例应用源代码。在Android开发中,NotePad经常被用作初学者学习和练习的基本项目,因为它涉及到常见的...
下面将详细阐述`ApiDemos`和`NotePad`这两个常见的Android示例项目,以及它们所涵盖的关键知识点。 1. **ApiDemos**:ApiDemos是Android SDK中自带的一个示例程序,它几乎涵盖了Android API的所有主要组件和功能。...
通过分析Android SDK中的示例项目,如NotePad,可以深入了解框架的内部工作原理和最佳实践,有助于提升开发技能和解决问题的能力。 ### 多媒体 - **音乐播放**:集成音乐播放功能,涉及音频文件的加载、播放控制等...
Android SDK 是 Android 开发中最重要的组件之一,它提供了大量的开发工具和资源。了解 Android SDK 的目录结构和作用是非常重要的。本文将详细介绍 Android SDK 中各个目录的名称和作用。 1、add-ons 目录 add-...
第1章 Android计算平台简介 1.1 面向新PC的全新平台 1.2 Android的历史 1.3 Dalvik VM剖析 1.4 理解Android软件栈 1.5 使用Android SDK开发最终用户应用程序 1.5.1 Android模拟器 1.5.2 ...
在Notepad++中,可以打开XML文件,然后选择“编码”菜单,选择“转换为UTF-8无BOM”,然后保存文件,这样就能确保XML文件以Android可识别的UTF-8格式进行解析。 在Unity3D中加载XML文件时,可以使用C#内置的`System...
此示例展示了如何使用Robotium的API来模拟用户在“NotePad”应用中的操作,包括添加笔记、返回等基本流程。 #### 六、总结 通过以上介绍,我们可以看到Robotium不仅提供了强大的自动化测试功能,还具有很高的灵活...