- 浏览: 973038 次
- 性别:
- 来自: 深圳
博客专栏
-
飞雪的Android学习总...
浏览量:145732
文章分类
最新评论
-
lovebingheji:
感谢,看完了
Spring方法注入 -
ruijin5566:
package concurrent;
import ja ...
淘宝面试题:如何充分利用多核CPU,计算很大的List中所有整数的和 -
helonghui:
Nginx在高并发的时候,内存开销比Apache更加有优势!
使用Nginx搭建PHP服务器 -
xjgpeople:
不错,写的非常不错
基于Android的浮动组件,可以用于应用中的新功能展示等等。 -
Bj_junxia:
不允许加入了,呜呜呜。。。。
Android系列教程之五:Activity的生命周期
Android系列教程目录:
-
Android教程之一:Window下搭建Android开发环境
-
Android教程之二:Linux下搭建Android开发环境
-
Android教程之三:第一个Android应用,HelloWorld
本文版权归飞雪无情 所有,转载请注明出处, 永久链接: http://flysnow.iteye.com/blog/812375
我新建了一个Android的技术交流群,群号为86686524 120059404 ,感兴趣的可以申请加入,大家一块学习。
一: Android 项目的目录结构
-
Android
项目结构概览。其实
Android
项目的目录结构和
Java
的差不多,没有太大变化,如下图:
- 可以看到 src 文件夹里的是源文件, Android2.2 是引用的类库,这些和 java 的都一样,那么下面的这个 gen 是什么呢?这个里面的类就是 ADT 自动生成的啦,一般只有一个 R.java 文件,是不能修改的,那么他是怎么生成的呢,看到下面的 res 文件夹了吗? R.java 就是根据资源文件夹 res 生成的 ,R.java 里放的就是 res 中资源文件索引,用一个常量标记 res 中的一个资源文件,便于我们在代码中引用。
-
现在让我们看看
res
文件夹,这下面又有几种类别,其中
drawable
是放图片的,有
drawable-hdpi,drawable-ldpi,drawable-mdpi
之分,对应的是高密度图片,低密度图片,和中等密度的图片,如果你要使用一个图片,你根据密度的不同做了三种相同的图片分别放到这三个文件夹里,那么你的应用运行在不同分辨率机器上的时候,就会根据该机器的分辨率自动选择合适的图片,怎么样智能吧!下图是密度和手机尺寸对应关系表。
Layout 中放的就是布局文件了, Android 支持通过 xml 生成视图,这样视图就和逻辑控制的代码分离了便于管理。
Values 中放的就是我们常用的字符串,颜色值,数组等 .
其实资源文件还有多种,这里生成的 HelloWorld 结构中没有,比如动画 , 菜单等。
接下来的这个 AndroidManifest.xml 很重要,每个 Android 项目都有一个,这是 Android 的配置文件,我们可以在这里配置应用的属性,定义 Activity ,声明使用的权限等等,这里就不具体介绍,后面的章节会讲到 .default.properties 也是一个配置文件。
二: Android 项目文件的具体讲解
- 首先看这个 HelloWorld 类。
public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
他继承了 Activity ,前面讲了,一个 Activity 可以想象成一个手机的屏幕,用于展示一屏的内容,所以所有要展示内容的屏幕都要继承 Activity 才能实现,接着覆盖了 onCreate() 方法对该 Activity 进行初始化 setContentView(R.layout. main ); 设置了使用 main.xml 这个布局文件作为当前 Activity 的内容展示 .main.xml 就是放在 res 下, layout 下面的文件 xml 布局文件 , 我们可以直接使用 R.layout.main 进行直接的引用他,这也是 Android 亮点的地方,省得我们为了引用一个 xml 文件再使用 File 类去读取,我们要做的只是把这个 xml 文件的索引给 Android ,他会自动的帮我们找到它并使用 .
2. 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>
布局文件的内容不多 , 开始就是一个 LinearLayout 组件的定义,然后在这个 LinearLayout 放了一个用于显示文字的 TextView 。现在来看一下几个参数 :
- . LinearLayout 一个线性布局面板,只能垂直和水平布局, android:orientation="vertical" 代表里面的子元素只能垂直排列,而使用 android:orientation="horizontal" 就标识里面的子元素水平排列 ..
- . android:layout_width 定义当前视图占的宽度,这里是 fill_parent 即为充满整个屏幕。而设置成 wrap_content 会根据当前视图的大小只能的改变宽度
- . android:layout_height 是定义视图的高度,这里也是填充整个屏幕。而设置成 wrap_content 会根据当前视图的大小只能的改变高度。
- . android:text 是这是 TextView 要显示的文本,可以是字符串,也可以是一个字符串的引用,这里是一个引用,引用的是 strings.xml 定义好的名字为 hello 的字符串
3. string.xml 介绍。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloWorld!</string> <string name="app_name">HelloWorld</string> </resources>
这里我们看看就明白了,只要是定义一个个的 K-V 的键值对,供其他地方使用。比如上面的 main 中对 hello 的引用。这对字符的统一管理和国际化有很大的意义。
4. AndroidManifest.xml 的介绍
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flysnow" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloWorld" 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="8" /> </manifest>
这是项目的重要配置文件,诸如 Activity ,权限, Intent 等都在这里配置
- Package: 定义了该应用的包。
- android:versioCode 定义了应用的版本号
- android:versionName 定义了应用的版本名字
- application 标签定义了一个应用,一个项目最多有一个 Application 标签。
- android:icon="@drawable/icon" 定义了应用的图标 引用资源文件中的 icon 图片
- android:label="@string/app_name" 定义了应用的名称
- activity 标签定义了一个 Activity ,你的每一个 Activity 必须在这里定义,否则不能运行 .
- Android:name 定义了 Activity 的类名 , 这里的 .HelloWorld 是以上面的 Package 定义为基础的,也就是 Package(com.flysnow) 加上这个 android:name(.HelloWorld) 要能定位到这个 Activity(com.flysnow.HelloWorld) ,否则就是找不到 .
- android:label 定义了该 Activity 的标题
- intent-filter 定义一个 Intent 过滤器,用于标记对应的 Activity ,以便 Android 系统能找到该 Activity ,定义的是隐性的 Intent ,主要使用两个子标签 action 和 category 来区分每个 Intent 。
最后的 <uses-sdk android:minSdkVersion="8" /> 就是定义应用的最低 SDK 的级别,前面讲过,,,想看的可以参见 Android教程之三:第一个Android应用,HelloWorld
三:小结
为了把 Android 项目的各个部分说清楚,啰嗦的多了一点,希望个为看官耐心看完 .
下节预告, Activity 的生命周期
评论
发表评论
-
android新建大分辨率模拟器不能启动的问题
2015-03-08 17:36 0新建的Android模拟器的分辨率超过一定大小的时候,就无法启 ... -
android覆盖式引导
2015-03-08 17:35 0我们在开发产品的时 ... -
Android产品开发中常用的一些开源项目
2015-03-08 17:27 2170你在工作中可能会遇到同时给你说不要重复发明轮子,其实这个说的 ... -
Android HttpClient Session保持
2015-03-08 17:20 14490现在单机版本的App已经 ... -
java.lang.UnsupportedOperationException android.view.GLES20Canvas.clipPath
2015-03-08 17:18 2066今天自定义控件使用Canvas绘图的时候遇到的这个错误,看错 ... -
解决Android SDK Manager不能更新的问题
2015-03-08 17:16 3167今天打算更新到Android4.3,看看里面的新的API,D ... -
PenddingIntent.getActivity
2013-03-11 16:40 0PenddingIntent.getActivity -
关于Android的Holo主题
2013-02-22 23:47 8088Android曾经为了优化用户体验,把原生的 ... -
Android Layout布局文件里的android:layout_height等属性为什么会不起作用?
2013-01-29 00:19 20530有的时候,我们配置好的布局文件,在加载完成添加到我们 ... -
震动反馈
2013-01-10 20:58 0震动反馈 -
Android ViewGroup.setDescendantFocusability函数
2013-01-05 12:15 22401这个函数是在ViewGroup里定义的,主要用于控制child ... -
Android设计应用图标不用愁---Asset Studio Integration来帮你
2011-11-12 00:18 8153Android Asset StudioWeb版是 ... -
最新最全的Android4.0 API源代码下载和完整Android4.0源代码下载教程
2011-11-15 09:41 2263这时刚刚整理好的最新的,包含所有的API的源代码,第一次上传的 ... -
基于Android的浮动组件,可以用于应用中的新功能展示等等。
2011-12-10 17:12 4568前言 在开发Android应用时,加新功能是必不可少 ... -
提取出的最新Android4.0 API 源代码
2011-11-15 14:06 4006提取出的Android4.0 API 的源代码,也就是andr ... -
Android中我为什么发不了邮件--Android邮件发送详解
2011-07-19 22:50 15572版权所有@飞雪无情,转载请著名出处:http:/ ... -
Android Developer和Google Group可以正常访问了
2011-06-21 08:56 2393Android Developer和Google Group可 ... -
Android中关于线程使用的几点注意事项
2011-05-21 22:43 8682版权所有:飞雪无情 ... -
Android系列教程之十二:Intents and Intent Filters(三)
2011-03-29 10:02 12866接上节继续。。版权所有:飞雪无情,转载请注明出处: ... -
android.resource://这个Uri你知道吗
2011-03-28 11:22 10229转自:http://www.android123.com.cn ...
相关推荐
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
运行(卸载)第一个ANDROID应用,05_项目的目录结构与安装及启动过程分析,06_电话拔号器,07_查看应用输出的错误信息 与如何部署应用到真实手机,08_短信发送器,09_深入了解各种布局技术,10_对应用进行单元测试,...
③ 下载 Android SDK 解压-> path 里加入 SDK 包中的 tools 目录全路径 ④ 下载 ADT 0.8.0 解压 ⑤ 打开 Eclipse 安装 ADT 插件 Android Android Android Android 的系统架构 系统构架 6 支持的功能 + Application ...
第 1 章 Android 系统结构与初始化流程10 1.1. Android 的发展历史回顾 ............... 10 1.1.1. Android 系统的发布 .............. 10 1.1.2. Android 版本的发展情况 ...... 10 1.2. Android 系统架构 ...........
运行(卸载)第一个ANDROID应用,05_项目的目录结构与安装及启动过程分析,06_电话拔号器,07_查看应用输出的错误信息 与如何部署应用到真实手机,08_短信发送器,09_深入了解各种布局技术,10_对应用进行单元测试,...
丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse 集成开发环境插件应用程序Android 会同一系列核心应用程序包一起发布,该应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器...
该开源项目包含了Android进阶的一些示例,配合本人的博客食用更佳~~ ToDoDataBinding 简介 DataBingding进阶系列,主要介绍如何让DataBinding兼容LiveData,使DataBinding获得感知Android组件的生命周期的能力...
android好书系列,我目前找了两本,先贡献给大家。以后如果有好的资源,再上传和大家分享。 本资源是第一本。 这是一本学习android的好书,我浏览了,是老外著的,高清晰的pdf。为了方便大家学习android,我将本书所...
通过介绍一系列优质的教程资源,包括官方文档、在线教程和权威课程,文章引导读者系统地学习Kotlin的基本语法、数据类型以及控制结构。对于初学者而言,这些教程如同敲门砖,让他们能够快速融入Kotlin的世界;对于有...
数据结构可视化操作: OpenGL学习: leecode刷题: flutter中文: 变量命名: android官方文档: android源码: C++文档: 设计模式: Spring简易教程: SpringMVC官方文档: 微信小程序: JVM官方文档: Dex字节码...
Google近期发布了MAD技能(现代Android开发)新系列教程,旨在帮助开发者使用最新的技术,开发更好的应用程序 将以视频和文章形式介绍MAD技能,包括Kotlin,Android Studio,Jetpack,App Bundles等等, Google仅...
我们将项目源码设计为模块化的结构,开发人员可以根据自己的需求选择和定制所需的功能模块。同时,我们还提供了丰富的文档和示例代码,以帮助开发人员理解和使用项目源码。 我们的安卓项目源码还采用了一些常用的...
在1.1.4.2版本中,它提供了一系列的功能和优化,方便开发者进行跨平台应用的开发。 1. 跨平台开发:利用uni-app框架,开发者可以使用一套代码,编译到多个平台,包括iOS、Android、H5、以及各种小程序。 2. 组件...
leetcode安卓软件工程资源精选目录 在互联网上搜索高低后,这是我精选的软件工程资源列表。 这绝不是详尽无遗的。 如果您有任何建议/改进,只需创建一个拉取请求并遵循相同的结构。 由...赞助: 内容 教育 Web开发 -...
参与项目开发:老人系列工具箱应用开发、奇遇社群应用程序开发、大稻旅图Beacon创新应用开发、Crazy Yummy暴食专家手机游戏开发、千变万话手机游戏开发、手势操控跨平台办公室数据中控系统开发、配对式交友手机社群...
他还是一位资深的Java软件开发工程师和Android/iOS移动应用开发工程师,活跃于CocoaChina、开源中国、CSDN等社区,CSDN博客专家,在CSDN博客撰写了系列微信公众平台二次开发的教程,深受欢迎并被广泛传播,也因此...
c/c++中文参考手册是每个学习c++或c语言必备的系列资源之一,它包含了c和c++11的标准,并提供深入浅出的介绍和详尽全面的内容,可以帮助读者快速掌握开发技巧。需要的朋友可以下载。 欢迎使用c/c++中文帮助文档资源...