1、资源列表

Android支持的资源列表
目   录 资源类型 描述
res/anim  XML  该目录用于存放帧(frame)、动画或补间(tweened)动画文件
res/drawable  图像 该目录中的文件可以是多重格式的图像文件,例如,bmp、png、gif、jpg等。该目录中的图像不需要分辨率非常高,aapt工具会优化这个目录中的图像文件。如果想按字流读取该目录下的图像文件,需要将图像文件放在res/raw目录中。
res/layout  XML 该目录用于存放XML布局文件。
res/values  XML 该目录中的XML文件与其他目录的XML文件不同。系统使用该目录中XML文件的内容作为资源,而不是XML文件本身。在这些XML文件中定义了各种类型的key-value对。在该目录中可以建立任意多个XML文件,文件可以任意命名。在该目录的XML文件中还可以根据不同的标签定义不同类型的key-value对。例如,通过<string>表情定义字符串key-value对,通过<color>标签定义标识颜色值的key-value对,通过<dimen>标签定义距离、位置、大小等数值的key-value对。
res/xml  XML 在该目录中的文件可以是任意类型的XML文件,这些XML文件可以在运行时被读取。
res/raw 任意类型

在该目录中的文件虽然也会被封装在apk文件中,但不会被编译。在该目录中可以放置任意类型的文件,例如,各种类型的文档、音频、视频文件等。

在目录中放入资源文件后,ADT会在gen目录中建立一个R.java文件,该文件中有一个R类,该类为每一个资源定义了唯一的ID,通过这个ID可以引用这些资源。

2、资源的基本使用方法

  Android会为每一种资源在R类中生成一个唯一的ID,这个ID是int类型的值。

  既可以在程序中引用资源,也可以在XML文件中引用资源。

    例如:

      Button btnShowDate = (Button)findViewById(R.id.btnShowDate);

  使用字符串资源重新设置了Activity的标题:

    setTitle(R.string.hello);

  除了使用java代码来访问资源外,在XML文件中也可以使用这些资源。

    例如:

      引用图像资源:@drawable/icon

      (其中icon就是res/drawable目录中的一个图像文件的文件名。这个图像文件可以是任何Android支持的图像类型,例如,gif、jpg等。因此,在drawable目录中不能存在同名的图像文件,例如,icon.gif和icon.jpg不能同时放在drawable目录中,这是因为在生成资源ID时并没有考虑文件的扩展名,所以会在同一个类中生成两个同命的变量,从而造成java编译器无法成功编译R.java文件。)

3、Android的应用程序组件

  Android程序可以利用其他Android应用程序中的资源(需授权)。例如,如果应用程序恰好需要一个显示图像列表的功能,而另一个应用程序正好有这个功能,只需要调用这个应用程序中的图像列表功能即可。

3.1 活动(Activity)组件

  类全名android.app.Activity。相当于C/S程序中的窗体(Form)或Web程序中的页面。每一个Activity提供一个可视化区域,可放置各种Android组件,例如,按钮、图像、文本框等。

  在Activity类中有一个onCreate时间方法,一般在该方法中对Activity进行初始化。通过setContentView方法可以设置在Activity上显示的师徒组件,setContentView方法的参数一般为XML布局文件的资源ID。

  一个带界面的Android应用程序可以由一个或多个Activity组成。例如,一种典型的设计方案是使用一个Activity作为主Activity(相当于主窗体,程序启动时会首先启动这个Activity)。在这个Activity中通过菜单、按钮等方式启动其他Activity。

  Activity窗口中的可视化组件的View及其子类组成,这些组件按着XML布局文件中指定的位置在差un港口上进行摆放。

3.2 服务(Service)组件

  每一个服务是一恶搞android.app.Service的子类。服务没有可视化接口,但可以在后台运行。例如,当用户进行其他操作时,可以利用服务在后台播放音乐,或者当来电时,可以利用服务同事进行其他操作,甚至阻止接听指定的电话。

  除此之外,其他程序还可以与服务进行通信。当与服务链接成功后,就可以利用服务中共享出来的接口与服务进行通信了。例如,控制音乐播放的服务允许用户暂停、播放、停止音乐的播放。

3.3 广播接收者(Broadcast receivers)组件

  一个应用程序可以有多个广播接收者,所有的广播接收者类都需要继承android.content.Broadcast-Reveiver类。广播接收者组件的唯一功能就是接收广播消息,以及对广播消息做出相应。有很多时候,广播消息是由系统发出的。例如,时区变化、电池的电量不足、收到短信等。

  除此之外,应用程序还可以发送广播消息,例如,通知其他的程序数据已经下载完毕,并且这些数据已经可以使用了。

  广播接收者与服务一样,都没有用户接口。但在广播接收者中可以启动一个Activity来响应广播消息,例如,通过显示一个Activity对用户进行提醒。也可以使用其他方法或几种方法组合来提醒,例如,闪屏、震动、响铃、播放音乐等。

3.4 内容提供者(Content providers)组件

  内容提供者可以为其他应用程序提供数据。这些数据可以保存在文件系统中。例如,SQLite数据库或者任何其他格式的文件。每一个内容提供者是一个类,这些类都需要从android.content.ContentProvider类继承。

  在ContentProvider类中定义了一系列的方法,通过这些方法可以使其他的应用程序获得和存储内容提供者所支持的数据。但在应用程序中不能直接调用浙西方法,而需要通过android.content.ContentResolver类的方法来调用内容提供者类中的提供的方法。

4.AndroidManifest.xml文件的结构

  每一个Android应用程序必须有一个AndroidManifest.xml文件(不能改成其他文件名),而且该文件必须在引用程序的根目录中。在这个文件中定义了应用程序的基本信息,在运行Android引用程序之前必须设置这些信息。

  · 定义应用程序的java包。这个包名将座位应用程序的唯一标识。在DDMS透视图的【file Explorer】视图中可以看到data/data目录中的每一个目录名都代表着一个应用程序,而目录名本身就是AndroidManifest.xml文件中定义的包名。

  · 应用程序中的Activity、Service、Broadcast receivers、Content providers组件在使用之前,必须在AndroidManifest.xml文件中定义。定义的信息主要是与组件对应的类名以及这些组件所具有的能力。通过AndroidManifest.xml文件中的配置信息可以让Android系统知道如何处理这些应用程序组件。

  · 确定哪一个Activity将座位第一个运行的Activity

  · 在默认情况下,Android系统会限制使用某些API,因此,需要在AndroidManifest.xml文件中为这些API授权后才可以使用它们。

  · 可以为授权应用程序与其他的应用程序进行交互。

  · 可以在AndroidManifest.xml文件中配置一些特殊的类。这些类可以在应用程序运行时提供调试及其他的信息。但这些只在开发和测试时使用,当应用程序发布时这些配置将被删除。

  · 定义了Android应用程序所需要的最小API级别。Android 1.1对应的API级别是2,Android 1.5对应的API级别是3,一次类推,最新的Android 2.1对应的API级别是7.

  · 指定应用程序中引用的程序库。

Android 学习手札(一) 应用程序架构的更多相关文章

  1. Android学习——第一个NDK程序

    在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...

  2. Android 学习手札(三) 视图(View)

    在Android 系统红,任何可视化组件都需要从android.view.View类继承.可以使用两种方式创建View对象. · 一种方式是使用XML来配置View的相关属性,然后使用相应的方法来装载 ...

  3. Android 学习手札(备注)

    1.在Android 应用程序中不能使用System.out.println(..)来输出信息,而要使用Log类中的静态方法输出调试信息. Log.d("onStart", &qu ...

  4. Android 学习手札(二) 活动(Activity)组件

    1.建立和配置Activity 建立Android工程时已经自动生成了一个默认的Activity,同时也生成了很多与Activity相关的文件,例如,res目录中的XML及图像文件.AndroidMa ...

  5. Android学习笔记__3__Android应用程序组成

    Android开发必须要了解构造块,Android应用程序是由里有六个重要组成部分组成的,这六种构造块如下:  ◆Activity ◆Intent Receiver ◆Service ◆Content ...

  6. 零基础Android学习笔记-02 安卓程序生命周期

    一个安卓程序生命周期会经历7中状态,并不一定是每次都全部经历.Create,Start,ReStart,Pause,Resume,Stop,Destory. 重载方法,用helloWorld程序去体验 ...

  7. fir.im Weekly - iOS/Android 应用程序架构解析

    假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于  iOS/Android 开发资源,也加入了一些关于 Web 前端方面的分 ...

  8. Android入门学习:Android 系统框架及应用程序执行过程

    Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...

  9. android初级应用到高端架构教程------ 完整体系化学习android开发

    系统的学习android开发技术,从应用到底层,再到架构,告别乱糟糟的学习方式,不再是抓不住重点.从上到下贯通,全面学习android开发.让你拥有清晰的思路,一步步学习android开发! 一般而言 ...

随机推荐

  1. Delphi webservice 定义 转

    webservice   Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务. 简介 它是一种构建应用程序的普遍 ...

  2. git bash【初级入门篇】

    最近公司打算使用git代替之前的svn版本控制工具,趁此机会打算好好学学git,这个号称当今世界最牛的分布式版本控制工具. 一.[git和svn的主要区别] 1.去中心化 svn以及微软的TFS均采用 ...

  3. HDOJ 2017 字符串统计

    Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组 ...

  4. 《算法问题实战策略》-chaper15-计算几何-线段相交

    这篇文章着力来讨论线段相交这一个问题. 给出两条线段,如何判断这两条线段相交? 如果这两条线段相交,如何求其交点? 线段相交问题通常由于其繁杂的情况种类而让人避而远之,在这里希望通过笔者的简化讨论希望 ...

  5. lightoj1057 - Collecting Gold (tsp问题)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1057 题目大意:在二维矩阵中,给你一个起点和至多15个的目标点.要你求出从起点出发经过 ...

  6. 上海Uber优步司机奖励政策(1月25日~1月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 使用Calendar获取近三年的财务信息

    1.

  8. html,shtml和htm的区别

    SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml是服务器动态产成的html. 虽然两者都是超文本格式,但shtml是一种用于SSI技术的文 ...

  9. redux-applyMiddleware实现理解+自定义中间件

    前言: 终于好好理解了middleware.... 1.redux middleware提供的是位于 action 被发起之后,到达 reducer 之前的扩展点. redux通过store.disp ...

  10. javaWeb上传文件代码

    javaweb两种方式的上传,1普通上传,2:jquery ajax后台上传,部分截图如下: 完成包下载,下载后倒入myeclipse工程即可,下载地址:http://files.cnblogs.co ...