res目录说明

android应用的res目录是一个特殊的目录,该项目里存放了

android应用所用的全部资源,包括图片资源、字符串资源、

颜色资源、尺寸资源等。

/res/value/strings.xml文件:该文件定义了一条一条的

字符串常量。

<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="hello_world">Hello world!</string> </resources>

java代码和xml中使用strings.xml资源文件中的字符串

资源:

  为了在java代码中使用资源,AAPT会为android项目自动生

  成一份R.java文件,R类中为每一份资源分别定义一个内部类,

  其中每个资源项对应内部类里一个int类型的field。

public final class R {
public static final class dimen {
public static final int activity_horizontal_margin=0x7f040000;
}
}

java代码中可以通过R.string.hello_world来引用到字符

串常量。

在XML文件中使用资源:

@<资源对应的内部类的类名>/<资源项的名称>

例:@string/hello_world

当我们在XML文件中使用标示符时----这些标示符无须使用

专门的资源进行定义,直接在XML文档中按如下格式分配标

示符即可:

   @+id/<标示符代号>

例如:android:id="@+id/ok"

上面为组件分配了一个标示符,接下来就可以在程序中引用

该组件了。

在java代码中,通过调用Activity的findViewById()方法

即可。

在XML文件中获取组件的方法:@id/<标示符代号>

android应用的清单文件:AndroidManifest.xml

   AndroidManifest.xml清单文件是每个android项目都必须的,

他是整个android应用的全局描述文件。AndroidManifest.xml清

单文件说明了该应用的名称,所使用的图标,以及包含的组件等。

AndroidManifest.xml清单文件通常可以包含如下的信息:

  1、应用程序的包名,该包名将会作为该应用的唯一标示

  2、应用程序所包含的组件,如Activity、Service、BroadcastReceiver

       和ContentProvider(所有组件都要在这里注册)

  3、应用程序兼容的最低版本

  4、应用程序使用系统所需的权限声明

  5、其他的应用程序访问该程序所需的权限声明

android应用的基本组件介绍:

Activity组件:android中负责与用户交互的组件。

View组件:所有UI控件、容器控件的基类,view组件就是

  android应用中用户实实在在看到的部分,但是View组件

  需要放到容器中组件中,或者使用Activity将他显示出来。

Service组件:Service与Activity的地位并列,他代表一个

单独的android组件。Service与Activity的区别在于:

Service通常位于后台运行,他一般不需要与用户交互,因此

Service组件没有图形界面。与Activity组件需要继承Activity

基类相似,Service组件需要继承Service基类。一个Service

组件被运行起来之后,他将拥有自己独立的声明周期,Service

组件通常用于为其他的组件提供后台服务或者监控其他组件的运

行状态。

BroadcastReceiver:android中另外一个重要的组件,代表广

播接收者。BroadcastReceiver非常类似于事件编程中的监听

器。不同的是:普通的事件监听器监听的事件源是程序中的对象,

BroadcastReceiver监听的事件源是android应用中的其他

组件。

使用BroadcastReceiver只要实现自己的BroadcastReceiver

子类,并重写onReceiver(Context context, Intent intent)

方法即可。当其他的组件通过上下文的sendBroadcast(),

sendStickyBroadcast()或sendOrderedBroadcast()方法

发送广播消息时,如果该BroadcastReceiver对该消息“感兴趣”

(通过IntentFilter配置),BroadcastReceiver的

onReceiver(Context context, Intent intent)方法会被出发。

通过两种方法来注册系统级的“事件监听器”:

1、java代码中通过Context.registReceiver()方法注册

2、在AndroisManifest.xml文件中使用<receiver.../>元素完成

ContentProvider:在android中各个应用之间是相互独立的,如

多个应用之间需要进行实时的数据交换,这时就要使用android

系统为跨应用数据交换提供的标准:ContentProvider。

使用ContentProvider时,需要实现如下抽象的方法:

1、insert(Uri, ContentValues):向ContentPorvider插入数据

2、delete(Uri, ContentValues):删除数据

3、update(Uri, ContentValues, String,  String[]):更新数据

4、query(Uri, String[], String, String[], String):插叙数据

通常与ContentProvider结合使用的是ContentResolver,一个应

使用ContentProvider暴露自己的数据,而另外一个应用程序则

ContentResolver来访问数据。

Intent和IntentFilter:严格的来说Intent不是android应用的

是他是android应用中不同组件之间通信的载体。当android

中需连接不同的组件时,通常是借助于Intent来实现的。

Intent可以启动应用中另外一个Activity。也可以启动Service,

以触发BroadcastReceiver。也就是说Intent是Activity、

Service、BroadcastReceiver三种组件之间通信的载体,只是

不同组件使用Intent的机制略有不同:

1、启动Activity:调用Context的StartActivity(Intent intent)

    方法,Intent中封装了需要启动的Activity的信息。

2、启动Service:调用StartService(Intent intent)或

    bindService(Intent , ServiceConnection, int)这两个方法

   中的Intent都是封装了需要启动的Service的信息。

3、触发BroadcastReceiver:调用Context的

    sendBroadcast(Intent intent)、

    sendStickyBroadcast(Intent intent)、

    或sendOrderedBroadcast(Intent, String)

    Intent中封装了需要触发的BroadcastReceiver的信息

Intent可以分为显示和隐式两类:

显示Intent:显示Intent明确指定了需要启动或者触发的组

                    件的名称。

隐式Intent:隐式Intent只是指定了需要启动或者触发的组

                   件应该满足怎样的条件

对于显示Intent,android系统无须对该Intent做任何的

解析,系统直接找到指定的目标组件,启动或者触发即可。

对于隐式Intent,android系统需要对该Intent进行解析,

解析出他的条件,然后再去系统中查找与之匹配的目标组件,

如果找到符合条件的组件,就启动或者触发。

android中组件通过IntentFilter来声明自己所需要满足

的条件

android项目各个文件详解的更多相关文章

  1. DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解

    关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  2. android Manifest.xml 文件详解

  3. Android.mk文件详解(转)

    源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...

  4. Android.mk文件和Application.mk文件详解

    Android.mk文件和Application.mk文件详解 相同点:都是轻量级 Makefile(Makefile文件定义一些列指令,指定文件编译顺序,类似shell脚本) Application ...

  5. ANDROID L——Material Design详解(UI控件)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  6. Cordova 打包 Android release app 过程详解

    Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...

  7. 给 Android 开发者的 RxJava 详解

    我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...

  8. [转]ANDROID L——Material Design详解(动画篇)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 转自:http://blog.csdn.net/a396901990/article/de ...

  9. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github. ...

随机推荐

  1. Selenium3 + Python3自动化测试系列十二——窗口截图与关闭浏览器

    窗口截图 自动化用例是由程序去执行的,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因.WebDriver提供了截图函数g ...

  2. zookeeper和dubbo可视化软件的使用

    1. zookeeper的可视化软件使用 Zkui 1. 下载软件 https://github.com/DeemOpen/zkui.git 2. 解压编译  clean install 会在targ ...

  3. NFS挂载error:reason given by server: Permission denied

    首先你得看看你的NFS服务有没有启动 然后你看看你要mount的文件夹有没有在NFS主机共享 然后再看权限对没对

  4. 我的scoi2018

    高一,很尴尬,凉~ -------- 大家好,我是分界线,我弱弱的说本次采用倒序的写作手法 -------- 故事是这样讲的: Day0: 刚刚去那个电科搞的集训,早上才考了一波模拟赛,下午就过来住酒 ...

  5. 关于JDK,tomcat,eclipse的配置

    1.下载安装JDK 在自定义安装路径时,jdk和之后的jre文件夹是属于平行结构,我的安装路径为:D:\jdk\jdk1.6.0_43和D:\jdk\jre6 然后是对环境变量的配置, 计算机→属性→ ...

  6. python--知识小结和集合

    知识小结 一. = 表示赋值 ==表示比较值的大小 is 比较内存地址 二. 数字小数据池:在-5~256之内,id在电脑里是一样的 字符串id一样要求: ①:不能有特殊字符 ②:s(一个单字符)*2 ...

  7. php调用系统命令的函数的比较

    了解命令的区别并进行直观的选择 这是一篇翻译文章,原作者通过表格的形式更加直观的展现出差异并进行选择 前言 PHP有众多调用系统命令的函数,大致如下: system() exec() passthru ...

  8. subst - 替换文件中的定义

    总览 (SYNOPSIS) subst [ -e editor ] -f substitutions victim ... 描述 (DESCRIPTION) Subst 能够 替换 文件 的 内容, ...

  9. 在阅读众多的blog中,我学到了什么

    写博客的人,自然会读别人的博客:读博客的人,不一定会写博客.但是这两种人之间的差别是很大的 在最近在一段时间,发现了一个好的博客,通过该博客的友链,发现了新大陆.... 从Jeff Wong开始,到老 ...

  10. rabbitmq AmqpClient 使用Topic 交换机投递与接收消息,C++代码示例

    // strUri = "amqp://guest:guest@192.168.30.11:8820/test" // strUri = "amqp://[帐户名]:[密 ...