- 浏览: 112371 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 947可能刚刚接触Androi ... -
Android上HDMI介绍(基于高通平台)
2011-06-22 20:41 2342本文重点针对HDMI在android上的应用,而比较相关的就是 ... -
Android2.2应用解析
2010-09-20 15:06 1533了解了Android应用程序的目录结构和其中每个文件的 ... -
android系统构架
2010-09-20 14:40 1253Android 架构 下图显示的是Android操作系统的主要 ... -
Android2.2新特性
2010-08-07 23:07 1014Android2.2(开发代 ... -
解决android2.2 开发时在eclipse 中的视图file explorer 中不显示sdcard现象
2010-08-07 23:04 1572解决android2.2 开发时 在eclipse 中 ... -
Android2.2软件开发工具包
2010-08-07 23:00 1401针对Android2.2操作系统的软件开发工具包(SDK ... -
TextView多行本文滚动轻松实现
2010-08-06 23:49 2238Android中我们为了实现文本的滚动可以在ScrollV ... -
Android中内嵌字体实现个性化
2010-08-06 23:47 2297在Android中我们的应用可以灵活的内嵌自己的字体文件 ... -
Android游戏开发---图像渐变特效
2010-08-06 23:45 1700在Android游戏开发中我们不免要涉及到一些图形特效处 ... -
Android多线程下载远程图片
2010-08-06 23:42 2191很多时候我们需要在Android设备上下载远程服务器上的图 ... -
Android Txt文本读写类源代码
2010-08-06 23:40 1272Android系统内部提供了一个不错的txt文本读写类, ... -
Android Market新反盗版机制原理
2010-08-06 23:39 1181目前来说Android平台的应用还是很容易盗版的,虽然G ... -
android2.2源码在eclipse中的配置与分析
2010-08-06 23:32 4385开发android时经常因为无法查看源码而痛苦,有两个原因: ...
相关推荐
对android目录结构总结的同时加深自己的理解 利于初级工程师的学习
这样是为了直接导出android apk,不需要再通过导出android project 再添加jar包。目录结构: 尝试用unity导出android 项目看
004_android 之项目的目录结构分析与资源引用!!!
Android项目的目录结构和程序的执行流程
android开发项目目录结构
Android项目的目录结构与安装及启动过程分析
简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Android项目的目录结构
Android项目的目录结构和程序的执行流程 Android项目的目录结构和程序的执行流程
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系统的架构以及程序项目的目录结构,是安卓开发入门学习中的基础知识,需要的朋友可以参考下
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 ...
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 ...
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 ...
2、Android项目的目录结构和程序的执行流程
安卓项目目录结构.png
Android移动开发: Android 开发环境搭建 第一个项目—HelloAndroid Android项目目录结构 Android应用解析 Android生命周期 Widget开发 Android中的显示单位 DDMS的简介与使用 apk的安装与卸载
第04部分:android项目目录结构,执行流程及其他分析 第05部分:MVC设计模式讲解及电话拨号器和短信发送器应用 第06部分:日志输出,单元测试及调试 第07部分:UI(上) 第08部分:UI(中) 第09部分:UI(下) 第10部分:组件...