- 浏览: 115760 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
SSB4455:
嗯 应该是这样
java线程学习之Thread.sleep() 和 Thread.yield() 区别 -
wishlee:
不详细啊
Java中23种设计模式详解 -
Vin-G:
正在学习,我想修改成:在主屏中不能长按和拖拉,不知道能不能实现 ...
android2.2源码在eclipse中的配置与分析 -
star_887012:
qq16881699 写道LZ的文章就是海量数据。。。。
常见的海量数据处理方法 -
I清晰:
看来头疼啊
常见的海量数据处理方法
我们以HelloAndroid项目,来分析其项目目录结构,对Android项目进一步的深入了解。首先启动Eclipse,展开"Package Explorer"导航器中的"HelloAndroid"项目,如图3-1所示。
图3-1 HelloAndroid项目 |
与一般的Java项目一样,src文件夹是项目的所有包及源文件(.java),res文件夹中则包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)等。下面来介绍其他Java项目中没有的的gen文件夹中的R.java文件和每个Android项目都必须有的AndroidManfest.xml文件。
R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改,R.java文件是定义该项目所有资源的索引文件。先来看看HelloAndroid项目的R.java文件,如代码清单3-1所示。
代码清单3-1 R.java
- package com.yarin.Android.HelloAndroid;
- public final class R {
- public static final class attr {
- }
- public static final class drawable {
- public static final int icon=0x7f020000;
- }
- public static final class layout {
- public static final int main=0x7f030000;
- }
- public static final class string {
- public static final int app_name=0x7f040001;
- public static final int hello=0x7f040000;
- }
- }
可以看到这里定义了很多常量,仔细一看就发现这些常量的名字都与res文件夹中的文件名相同,这再次证明R.java文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源,由于这个文件不能被手动编辑,所以当我们在项目中加入了新的资源时,只需要刷新一下该项目,R.java文件便自动生成了所有资源的索引。
AndroidManfest.xml文件则包含了该项目中所使用的Activity、Service、Receiver,我们先来打开HelloAndroid项目中的AndroidManfest.xml文件,如代码清单3-2所示。
代码清单3-2 AndroidManfest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.yarin.Android.HelloAndroid"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".HelloAndroid"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="5" />
- </manifest>
代码清单3-2中intent-filters描述了Activity启动的位置和时间。每当一个Activity(或者操作系统)要执行一个操作时,它将创建出一个Intent的对象,这个Intent对象能承载的信息可描述你想做什么,你想处理什么数据,数据的类型,以及一些其他信息。而Android则会和每个Application所暴露的intent-filter的数据进行比较,找到最合适Activity来处理调用者所指定的数据和操作。下面我们来仔细分析AndroidManfest.xml文件,如表3-1所示。
表3-1 AndroidManfest.xml分析
manifest |
根节点,描述了package中所有的内容 |
xmlns:android |
包含命名空间的声明。 xmlns:android=http://schemas. android.com/apk/res/android,使得 Android中各种标准属性能在文件中使用, 提供了大部分元素中的数据 |
Package |
声明应用程序包 |
application |
包含package中application级别组件声 明的根节点。此元素也可包含application 的一些全局和默认的属性,如标签、icon、 主题、必要的权限,等等。一个manifest 能包含零个或一个此元素(不能大余一个) |
android:icon |
应用程序图标 |
android:label |
应用程序名字 |
Activity |
用来与用户交互的主要工具。Activity是用 户打开一个应用程序的初始页面,大部分 被使用到的其他页面也由不同的activity所 实现,并声明在另外的activity标记中。 注意,每一个activity必须有一个<activity> 标记对应,无论它给外部使用或是只用于 自己的package中。如果一个activity没有 对应的标记,你将不能运行它。另外, 为了支持运行时查找Activity,可包含一个 或多个<intent-filter>元素来描述activity所支持的操作 |
android:name |
应用程序默认启动的activity |
intent-filter |
声明了指定的一组组件支持的Intent值,从 而形成了IntentFilter。除了能在此元素下指 定不同类型的值,属性也能放在这里来描 述一个操作所需的唯一的标签、icon和其他信息 |
action |
组件支持的Intent action |
category |
组件支持的Intent Category。这里指定 了应用程序默认启动的activity |
uses-sdk |
该应用程序所使用的sdk版本相关 |
下面我们看看资源文件中一些常量的定义,如String.xml,如代码清单3-3所示。
代码清单3-3 String.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, HelloAndroid!</string>
- <string name="app_name">HelloAndroid</string>
- </resources>
这个文件很简单,就定义了两个字符串资源,与R.java中对应的索引如代码清单3-4所示。
代码清单3-4 R.java中的String类
- public static final class string {
- public static final int app_name=0x7f040001;
- public static final int hello=0x7f040000;
- }
在程序中装载并使用这个字符串资源如代码清单3-5。
代码清单3-5 String资源的使用
- Resources r = this.getContext().getResources();
- String appname= ((String) r.getString(R.string.app_name));
- String hello= ((String) r.getString(R.string.hello));
基本上可以定义出项目中所有使用的常量,例如颜色。所以,可根据需对资源常量进行定义。下面是定义了颜色的常量colors.xml,如代码清单3-6所示。
代码清单3-6 colors.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <color name="status_idle">#cccccc</color>
- <color name="status_done">#637a47</color>
- <color name="status_sync">#cc9900</color>
- <color name="status_error">#ac4444</color>
- </resources>
现在我们来分析HelloAndroid项目的布局文件(layout),首先我们打开res->layout->main.xml文件,如代码清单3-7所示。
代码清单3-7 main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"
- />
- </LinearLayout>
代码清单3-7中,有以下几个布局和参数。
< LinearLayout>:线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的。
android:orientation:表示这个介质的版面配置方式是从上到下垂直地排列其内部的视图。
android:orientation:表示这里是水平排列
android:layout_width:定义当前视图在屏幕上所占的宽度,fill_parent即填充整个屏幕。
android:layout_height:定义当前视图在屏幕上所占的高度,fill_parent即填充整个屏幕。
wrap_content:随着文字栏位的不同而改变这个视图的宽度或高度。
layout_weight 用于给一个线性布局中的多个视图的重要度赋值。所有视图都有layout_weight 值,默认为零,即需要显示多大的视图就占据多大的屏幕空间。如果值大于零,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值和该值在当前屏幕布局的整体 layout_weight 值,以及在其他视图屏幕布局的layout_weight 值中所占的比例。
在这里,布局中设置了一个TextView,用来配置文本标签Widget,其中设置的属性android:layout_width为整个屏幕的宽度,android:layout_height可以根据文字来改变高度,而android:text则设置了这个TextView要显示的文字内容,这里引用了@string中的hello字符串,即String.xml文件中的hello所代表的字符串资源。hello字符串的内容"Hello World, HelloAndroid!"这就是我们在HelloAndroid项目运行时看到的字符串。
最后,我们来分析HelloAndroid项目的主程序文件HelloAndroid.java,如代码清单3-8所示。
代码清单3-8 HelloAndroid.java
- package com.yarin.Android.HelloAndroid;
- import android.app.Activity;
- import android.os.Bundle;
- public class HelloAndroid extends Activity
- {
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- /* 设置Activity要显示的布局为(R.layout.main) */
- setContentView(R.layout.main);
- }
- }
主程序HelloAndroid类继承自Activity类,重写了void onCreate(Bundle savedInstanceState)方法。在onCreate方法中通过setContentView(R.layout.main)设置了Activity要显示的布局文件(\layout\main.xml)。
到这里,是不是明白了为什么我们在创建项目时没有进行编码就可以直接运行程序呢?当然,这也是Android开发的特点,这样可以很轻松地将代码和UI分开,在国际化和程序维护方面有着巨大的作用。如果你的Android程序需要自适应国际化,比如说多国语言等问题,那么就可以定义不同语言的UI布局,在程序装载时调用不同的布局。而且,如果我们需要修改UI的一些问题,就不必查看代码了,直接更改这些布局文件即可,是不是很方便?当然,这需要开发者在开发时使用这种MVC框架,尽量减少使用"硬编码"。这里,笔者个人建议使用这种框架。
发表评论
-
Android系统名词解释汇总
2011-08-07 16:03 994可能刚刚接触Androi ... -
Android上HDMI介绍(基于高通平台)
2011-06-22 20:41 2423本文重点针对HDMI在android上的应用,而比较相关的就是 ... -
Android2.2应用解析
2010-09-20 15:06 1585了解了Android应用程序的目录结构和其中每个文件的 ... -
android系统构架
2010-09-20 14:40 1290Android 架构 下图显示的是Android操作系统的主要 ... -
Android2.2新特性
2010-08-07 23:07 1042Android2.2(开发代 ... -
解决android2.2 开发时在eclipse 中的视图file explorer 中不显示sdcard现象
2010-08-07 23:04 1604解决android2.2 开发时 在eclipse 中 ... -
Android2.2软件开发工具包
2010-08-07 23:00 1438针对Android2.2操作系统的软件开发工具包(SDK ... -
TextView多行本文滚动轻松实现
2010-08-06 23:49 2270Android中我们为了实现文本的滚动可以在ScrollV ... -
Android中内嵌字体实现个性化
2010-08-06 23:47 2328在Android中我们的应用可以灵活的内嵌自己的字体文件 ... -
Android游戏开发---图像渐变特效
2010-08-06 23:45 1731在Android游戏开发中我们不免要涉及到一些图形特效处 ... -
Android多线程下载远程图片
2010-08-06 23:42 2237很多时候我们需要在Android设备上下载远程服务器上的图 ... -
Android Txt文本读写类源代码
2010-08-06 23:40 1319Android系统内部提供了一个不错的txt文本读写类, ... -
Android Market新反盗版机制原理
2010-08-06 23:39 1212目前来说Android平台的应用还是很容易盗版的,虽然G ... -
android2.2源码在eclipse中的配置与分析
2010-08-06 23:32 4418开发android时经常因为无法查看源码而痛苦,有两个原因: ...
相关推荐
本篇将详细介绍Unity导出Android项目的目录结构及其重要性。 首先,Unity在导出Android APK时会自动生成一个包含所有必要资源、代码和库的结构。这个结构大致可以分为以下几个关键部分: 1. **Assets**:这是Unity...
对android目录结构总结的同时加深自己的理解 利于初级工程师的学习
下面将详细解析Android项目的目录结构及其资源管理。 一、项目目录结构 1. `app`:这是你的应用模块,通常包含`src`、`build.gradle`、`res`等子目录。 - `src`:源代码目录,分为`main`、`androidTest`等。`main...
### Android项目的目录结构和程序的执行流程 #### 目录结构概述 在深入探讨Android项目的目录结构之前,让我们先理解其重要性。Android项目的目录结构是开发者组织代码、资源和其他项目相关文件的基础框架,它不仅...
这是Android项目的构建脚本,用于定义如何编译和链接各种模块,包括库、应用程序和服务。它包含了所有目标文件、依赖关系以及构建规则。 #### 2. `bionic` 此目录包含了一组核心C/C++运行时库,是Android系统中的...
Android 项目目录结构是 Android 应用程序的基本结构,它主要包含以下几个部分:src、gen、assets、bin、libs 和 res 等。src目录是源文件目录,gen目录是 ADT 自动生成的 JAVA 文件,assets目录是资源文件目录,bin...
4. `AndroidManifest.xml`:这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。 四、其他文件 在Android Studio下的APP目录...
深入理解Android项目的目录结构,能够帮助开发者在进行应用开发时更加高效地组织和管理代码和资源,同时也能确保在开发过程中遵循正确的编程实践和规范,这对开发出稳定和高质量的Android应用程序至关重要。...
本文将详细介绍Android项目的各个主要目录及其作用,帮助开发者更好地理解和管理项目结构。 #### 二、Android项目的目录结构解析 ##### (一)Src - **描述**:此目录用于存放项目的源代码。 - **重要性**:这是...
2. **Android项目结构**:在绿豆通讯录项目中,你将看到标准的Android项目目录结构,包括`app`模块、`src`源码目录、`res`资源文件夹、`build.gradle`构建文件等。了解这些文件的作用对于管理项目至关重要。 3. **...
Android-template遵循了标准的Android项目目录结构,包括以下几个关键部分: 1. **app**:这是主要的Android应用模块,包含了所有的源代码、资源文件和构建配置。 2. **build.gradle**:项目级别的构建脚本,定义了...
总结起来,Android项目的目录结构是精心设计的,旨在帮助开发者更好地组织代码和资源。理解每个部分的功能对于有效管理项目至关重要。随着学习的深入,开发者会发现更多关于Activity生命周期、资源管理和意图...
HelloWorld项目的目录结构是Android应用开发的基础,它展示了Android项目的组织方式。在这个结构中,每个部分都有其特定的作用和功能。 1. **src 文件夹**:这个文件夹存放着项目的源代码。在HelloWorld示例中,...
首先,我们来详细解析Android项目的目录结构。一个标准的Android Studio项目通常包含以下几个主要部分: 1. **app**:这是项目的主模块,包含了所有源代码、资源文件和构建配置。其中,`src`目录分为`main`和其他...
对于初学者而言,理解和熟悉Android项目的目录结构对于后续的开发工作至关重要。 5. 创建模拟器与运行Android程序 开发Android应用通常需要在模拟器上进行测试,因此,掌握如何创建和配置模拟器是必不可少的技能。...
下面我们将深入探讨Android项目的目录结构及其相关流程。 一、Android Studio项目结构 1. **根目录**:整个Android Studio项目的起点,包含了多个子目录和文件。 - `build.gradle`:项目的顶级构建脚本,定义了...
3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户界面简介 4.1.2 事件处理 4.2 常用控件应用 4.2.1 ...
Android项目的目录结构是开发工作的起点,04大话企业级Android开发_Android项目的目录结构、执行流程及其他基础分析.pdf详细阐述了Android工程的各个组成部分,包括src、res、AndroidManifest.xml等关键文件和目录的...