Android笔记----使用Intent和Android应用资源
来源:互联网 发布:色选机 知乎 编辑:程序博客网 时间:2024/06/06 18:53
Intent对象详解
Intent属性及intent-filter配置
使用Intent创建Tab页面
资源的类型和存储的方式
字符串、颜色资源
数组(Array)资源
Intent对象详解
当一个Activity需要启动另一个Activity时,程序并没有直接告诉系统要启动哪一个Activity,而是通过Intent来表达自己的意图。两个Activity可以把需要交换的数据封装成Bundle对象,然后使用Intent来携带Bundle对象,这样就实现了两个Activity之间的数据交换。
Intent封装Android应用程序需要启动某个组件的”意图”。
使用Intent启动不同组件的方法。
组件类型
启动方法
Activity
startActivity(Intent intent)
startActivityForResult(Intent intent, int requestCode)
Service
ComponentName startService(Intent service)
Boolean bindService(Intent service,ServiceConnection conn,int flags)
BroadcastReceiver
sendBroadcast(Intent intent);
sendBroadcast(Intent intent, String receiverPermission);
sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) ;
sendOrderedBroadcast(Intent intent,String receiverPermission )
sendStickyBroadcast(Intent intent);
sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);
Intent对象大致包含Component、Action、Category、Data、Type、 Extra和Flag这7种属性,其中Component用于指定需要启动的目标组件,而Extra用于携带需要交换的数据。
Intent代表了Android应用的启动“意图”, Android应用将会根据Intent来启动指定的组件,至于到底启动哪一个组件,则取决于Intent的各属性。
Component属性
Intent的Component属性需要接受一个ComponentName对象, ComponentName对象包含如下几个构造器。
ComponentName(String pkg,String cls):创建pkg所在包下的cls类所对应的组件。
ComponentName(Context pkg,String cls):创建pkg所对应包下的cls类所对应的组件。
ComponentName(Context pkg,Class<?>cls):创建pkg所对应包下的cls类所对应的组件。
以上构造方法说明:创建一个ComponentName需要指定包名和类名。
Intent属性及intent-filter配置
Action、Category属性与intent-filter配置:
Intent的Action、Category属性都是一个普通的字符串,其中Action代表该Intent所要完成的一个抽象“动作”,而Category则用于为Action增加额外的附加类别信息。通常Action属性会与Category属性结合使用。
Action要完成的只是一个抽象的动作,这个动作具体由哪个组件来完成, Action这个字符串本身并不管,而是取决取Activity的<intent-filter…/>配置,只要某个Activity的<intent-filter…/>配置中包含了该Action,该Activity就有可能被启动。
指定Action、Category调用系统的Activity:
Android内部提供了大量的标准Action、Category常量,其中用于启动Activity的标准Action常量及对应的字符串如下表所示。
Action常量
目标组件
简单说明
ACTION_CALL
activity
发起一个电话呼叫.
ACTION_EDIT
activity
显示数据给用户来编辑.
ACTION_MAIN
activity
应用程序的入口
ACTION_SYNC
activity
将设备上的数据和一个服务器同步.
ACTION_DIAL
activity
启动系统拨号程序和其他拨号程序,并显示Data里指定的电话号码
ACTION_SENDTO
activity
向Data里描述的目标地址发送
标准Category常量及所表示的含义如下表
Category常量
简单说明
CATEGORY_BROWSABLE
目标activity可以使用浏览器来显示-例如图片或电子邮件消息.
CATEGORY_GADGET
该activity可以被包含在另外一个装载小工具的activity中.
CATEGORY_HOME
该activity显示主屏幕,也就是用户按下Home键看到的界面.
CATEGORY_LAUNCHER
该activity可以作为一个任务的第一个activity,并且列在应用程序启动器中.
CATEGORY_PREFERENCE
该activity是一个选项面板.
CATEGORY_BROWSABLE
目标activity可以使用浏览器来显示-例如图片或电子邮件消息.
Data、Type属性与intent-filter配置:
Data属性通常用于向Action属性提供操作的数据。 Data属性接受一个Uri对象,一个Uri对象通常通过如下形式的字符串来表示。
例: content://com.android.contacts/contacts/1
tel:123456
上面所示的两个字符串的冒号前面大致指定了数据的类型,冒号后面的是数据部分。因此一个合法的Uri对象既可以决定操作哪种类型的数据,又可指定具体的数据值。
Type属性则用于明确指定Data属性所指定数据的类型或MIME类型。通常来说,当Intent不指定Data属性时Type属性才会起作用,否则Android系统将会根据Data属性值来分析数据的类型,因此无须指定Type属性。如果一旦为Intent同时指定了Action、Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序。
使用Intent创建Tab页面
使用TabActivity来创建Activity布局,添加Tab页面使用了TabHost.TabSpec如下方法。
setContent(int viewId):直接将指定View组件设置成Tab页的Content。
setContent(Intent intent):直接将指定Intent对应的Activity设置成Tab页的Content。
资源的类型和存储的方式
Android应用资源可分为两大类:
无法直接访问的原生资源,保存在assets目录下。
可通过R资源清单类访问的资源,保存在res目录下。
1、 资源的类型及存储方式
Android要求在res目录下用不同的子目录来保存不同的应用资源,不同资源在/res目录下的存储方式
2、 使用资源
在Android应用中使用资源分为在Java代码和XML文件中使用资源,其中Java代码用于为Android应用定义四大组件,而XML文件中则用于为Android应用定义各种资源。
3、在Java代码中使用资源
Java代码中访问资源主要是通过R类来完成,其完整的语法格式为:
[<package_name>.]R.<resource_type> .<resource_name>
< package_name>:指定R类所在包。
<resource_type>:R类中代表不同资源类型的子类。
< resource_name >:指定资源的名称。
例如:
//从string资源中获取指定字符串资源,并设置该窗口的标题 getWindow().setTitle(getResources().getText(R.string.main_title)); //获取指定的TextView组件,并设置该组件显示string资源中的指定字符串资源。 TextView msg=(TextView)findViewById(R.id.msg); msg.setText(R.string.hello_message);
4、在XML代码中使用资源
当定义XML资源文件时,其中的XML元素可能需要指定不同的值,这些值可设置为已定义的资源项。在XML代码中使用资源的完整的语法格式为:
@[<package_name>:]<resource_type> /<resource_name>
< package_name >:指定资源类所在应用的包。
< resource_type >:R类中代表不同资源类型的子类。
< resource_name >:指定资源的名称。
字符串、颜色资源
字符串资源、颜色资源、尺寸资源,它们对应的XML文件都位于/res/values目录下,它们默认的文件名,以及在R类中对应的内部类如下表所示。
资源类型
资源文件的默认名
对应R类中内部的名称
字符串资源
/res/values/strings.xml
R.string
颜色资源
/res/values/colors.xml
R.color
尺寸资源
/res/values/dimens.xml
R.dimen
1、颜色值的定义
颜色值的定义是通过RGB三原色和一个alpha值来定义的。颜色值定义的开始是一个井号(#),后面是Alpha-Red-Green-Blue的格式。例如:
#RGB:分别指定红、绿、蓝三原色的值(0~f)来代表颜色。
#ARGB:分别指定红、绿、蓝三原色的值(0~f)来代表颜色及透明度(0~f)来代表颜色。
#RRGGBB:分别指定红、绿、蓝三原色的值(00~ff)来代表颜色。
#AARRGGBB:分别指定红、绿、蓝三原色的值(00~ff)来代表颜色及透明度(00~ff)来代表颜色。
上面四种形式中,A、R、G、B都代表一个十六进制数年,其中A代表透明度,R代表红色的数值,G代表绿色的数值,B代表蓝色的数值。
2、定义资源
字符串资源文件位于/res/values目录下,其根元素是<resource…> ,该元素里每个<string…/>子元素都定义一个字符串常量,其中<string…/>元素中的name属性指定该常量的名称, <string…/>元素开始标签和结束标签之间的内容代表字符串值。
颜色资源文件位于/res/values目录下,其根元素是<resource…> ,该元素里每个<color…/>子元素都定义一个字符串常量,其中<color…/>元素中的name属性指定该颜色的名称, <color…/>元素开始标签和结束标签之间的内容代表颜色值。
尺寸资源文件位于/res/values目录下,其根元素是<resource…> ,该元素里每个<dimen…/>子元素定义一个尺寸串常量,其中<dimen…/>元素中的name属性指定该尺寸的名称, <dimen…/>元素开始标签和结束标签之间的内容代表尺寸值。
数组(Array)资源
Android中同推荐在Java程序中定义数组,因为Android允许通过资源文件来定义数组资源。
数组资源文件位于/res/values目录下的arrays.xml文件来定义数组,其根元素是<resource…> ,该元素内可包含如下三种子元素:
<array…/>子元素:定义普通类型的数组。
<string-array…/>子元素:定义字符串数组。
<integer-array…/>子元素:定义整数数组。
一旦在资源文件中定义了数组资源,接下来就可以在Java文件中通过如下形式来访问资源了:
[<package_name>.]R.array.array_name
为了能在Java程序访问到实际数组,Resources提供如下方法。
String[] getStringArray(int id):根据资源文件中字符串数组资源的名称来获取实际的字符串数组。
Int[] getIntArray(int id):根据资源文件中整型数组资源的名称来获取实际的整型数组。
TypedArray obtain TypedArray(int id) :根据资源文件中普通数组资源的名称来获取实际的普通数组。
- Android笔记----使用Intent和Android应用资源
- 第 8 讲 使用Intent和Android应用资源
- android应用开发笔记---Activity和Intent
- Android笔记----Android应用资源
- Android 使用Intent 安装应用
- android应用Intent使用大全
- android Intent.Action 使用笔记
- Android应用开发学习笔记之Intent
- 【Android】Intent介绍和使用
- android应用开发笔记-xml数据资源使用
- Android学习笔记--应用资源的使用(Drawable)
- Android 系统应用调用,intent的使用
- android Menu和android Intent使用。
- android 应用组件[Intent 和 Intent 过滤器] 一
- android Intent : android.intent.category.DEFAULT的用途和使用
- android使用获取所有应用的资源id和uri
- android使用获取所有应用的资源id和uri
- android使用获取所有应用的资源id和uri
- 2014年总结——协作篇
- C#总结——堆与栈
- JS基础:2.5 window.open打开新窗口
- js常见对象及方法
- Java/Android 文件下载
- Android笔记----使用Intent和Android应用资源
- ITK配准:基于DeformationFieldTransform的配准
- js数据结构和算法(二)栈和队列
- js这些代码你都不会,你还有什么好说的!!!
- just half cup of coffee
- Leetcode@Search in Rotated Sorted Array
- linux下使用openssl对socket通信加密
- Linux下实现Mac下QuickSilver那样的一键切换程序(代替Alt-Tab键)
- Kafka#2:消息队列