android项目各个文件详解
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项目各个文件详解的更多相关文章
- DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解
关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- android Manifest.xml 文件详解
- Android.mk文件详解(转)
源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...
- Android.mk文件和Application.mk文件详解
Android.mk文件和Application.mk文件详解 相同点:都是轻量级 Makefile(Makefile文件定义一些列指令,指定文件编译顺序,类似shell脚本) Application ...
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- Cordova 打包 Android release app 过程详解
Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...
- 给 Android 开发者的 RxJava 详解
我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...
- [转]ANDROID L——Material Design详解(动画篇)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 转自:http://blog.csdn.net/a396901990/article/de ...
- android ------- 开发者的 RxJava 详解
在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github. ...
随机推荐
- PHP上传文件超过文件最大限制导致无法上传成功
最近在学习<HeadFirst PHP & MySQL>一书的第5章"使用存储在文件中的数据",做一个文件上传的应用时,出现了错误,就是文件无法成功上传.这个问 ...
- mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)
系统环境 centos 7.2 mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...
- lg5169 xtq的异或和
题目 根据一些众所周知的结论,我们先跑一棵生成树出来,之后把所有简单环都搞出来,那么\(u\)到\(v\)的路径一定可以由树上的路径和一些简单环拼起来得到 把所有简单环都插到一个线性基里,之后dfs一 ...
- 学习vim 从常用按键开始
ctrl+e 将屏幕下滚一行 ctrl+u 将屏幕上滚半页 ctrl+d 将屏幕下滚半页 ctrl+b 将屏幕上滚一页 ctrl+f 将屏幕下滚一页 撤销 u 前进 ctrl r 移动 下一个单词 ...
- Node.js中的fs文件系统
fs.stat 检测是文件还是目录 fs.mkdir 创建目录 fs.writeFile 创建写入文件 fs.appendFile 追加文件 fs.readFile 读取文件 fs.readdir 读 ...
- 如何在mysql数据库中开启使用tab键补全功能
声明:数据库tab键补全的是表名,列名,数据库名,不是数据库中的命令,变量等 永久支持tab键补全[root@localhost ~]# vim /etc/my.cnf添加以下两行:[mysql]au ...
- Recycleview点击事件监听器(转自:http://www.jianshu.com/p/f2e0463e5aef)
package com.taven.uav.view; import android.content.Context;import android.support.v7.widget.Recycler ...
- HIVE(2) 之 常用函数
LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为N ...
- Spring AOP 总结
AOP的基础是Java动态代理 Java中代理的实现一般分为三种:JDK静态代理.JDK动态代理以及CGLIB动态代理. 静态代理: 代理类与被代理类实现同一个接口,在代理类中持有一个被代理对象的引用 ...
- JMeter目录结构
转载自https://www.cnblogs.com/imyalost/p/6959797.html 首先得了解一下这些东西,以后才能快速的找到某些配置文件进行修改(举个例子,改配置只是其中之一) 一 ...