至此,你应该已经完成以下前期准备事情:

1.安装完JDK

2.安装完SDK(并在Manager中进行相关版本的更新)

3.相关IDE(如eclipse)

4.安装完ADT

5.安装完AVD(如果你是真机模拟的话也可以不安装)

前期环境搭建基本完成,并按照网上的教程可以运行出HelloWorld,确保可以流程走的通。

所谓会当凌绝顶,一览众山小。我学习新东西时总会从系统或全局的角度对它进行一个总览,这样才能从更高的角度去把握它,而且你对接下来的学习也会有一个系统的认知会让之后的学习更有条理和针对性。

一.接下来就是要介绍一下Android的基本系统架构了

在最外的是负责直接和用户交互的应用层,就是通常意义上我们看得见、可以下载的应用,浏览器、游戏、音乐播放器等等。

紧接着是应用的框架层,在我们开发应用时会经常调用,比如ActivityManager,ViewSystem等等,后面会介绍。

再接这就到了运行机制的JVM层了,你可以看到它不但包含了一个Runtime,而且还有一些相关的类库。

最低层是基于Linux的内核,包含了一些硬件的驱动,主要负责和硬件进行交互,比如你可以在你的应用中调用照相机,Wifi接口等都是很方便的。

二.工程组织和结构

接下来我们右键new一个AndroidApplication项目,如果找不到的话在new选项里最下面的others中如下:

一路next,建好后如下:

三.来认识一下各个文件夹都是干什么的

src:存放你的源码,比如.java文件,可以理解为vs中的类库.cs文件之类的。

gen:系统生成的东西,不要去改动,展开后如下:,这里的R文件会经常用到,里面都是存放的一些类似注册的全局ID(后面会介绍)。

GoogleApis:就是要到的一些SDK中谷歌的接口。

AndroidPrivateLibarares:安卓的一些类库。

AndroidDependencies:安卓的一些依赖库。

assets:存放你项目中的“大”资源文件,比如图片、视频、媒体等,所谓“大”只因为在Android项目中还有一个资源文件夹res主要存放一些字体、文字、颜色等的“小”资源。

bin:这个不用说了吧。

libs:类似vs中的dll引用。

res:主要存放一些字体、文字、颜色等的“小”资源。展开如下:

主要会用到layout和values,(其他的可能也会大量用到,只不过自己也还在摸索中)

layout:用来存放布局文件

values:用来存放文字,颜色等,kv值(这里有一点需要注意,在Android开发中,为了保持项目的灵活性和避免硬编码,它会建议你把要用到的kv值存到一个文件里,在用到的地方直接引用,这就是为什么要有values文件夹的原因了)。

AndroidManifest.xml:这个文件很重要,是用来保存整个程序的相关配置的一个清单,比如项目名,版本号、启动activity、权限说明等。

三.认识完工程结构后,我们来了解几个基本概念。

因为以前在学校学过java(虽然已经忘记的差不多了),所以自己还算有些基础,对一些基本的语法和使用还是有些了解的,如果你对java一无所知,我建议你先花一两个小时看看基本的语法,比如怎么继承,怎么实现接口,相信我作为一名c#的程序员,你可能只需要10分钟就可以搞定了,因为你会发现它和c#是多么惊人的相似!

好了,到这我们才真正开始!

作为一个对移动应用开发倍感神秘的初学者来说,我只想知道,我应该怎么开始,它到底是怎么实现并显示在手机上的。

我们打开layout文件夹中的activity_main.xml,看到了吧,是不是似曾相识(控件+布局+代码)

这个就是程序的启动页,类似于main方法 ,就是入口,当然你也可以自己设置其他的入口页。

几个概念:

1.Activity:这个是最常用到的一个概念,你可以把它理解为当前活动得屏幕,就是呈现在手机上的一个页,联想web页。

这是Activity的生命周期

Activity的可视生命周期为OnStart()开始直到OnStop()结束(可能会看不见内容,但会保留相关资源)

Activity的前台生命周期为OnStart()开始直到OnStop()结束(在最前面和用户进行交互)

2.包名:java中的“包名”类似我们c#中的命名空间,一个“包”就是一个dll引用文件。不过我觉得eclipse中有一点做得很好,即你在用到一个方法或类时不用再顶部import它好像会自动的帮你完成,vs中好像还得手敲一下。

java中要确保包名唯一所以一般用公司域名的反写来命名比如com.letchoice.HelloWorld。

三.几个快捷键和相关设置

1.格式化代码:ctrl+shift+F(有代码洁癖同学首选)

2.在你格式化xml文档的时候可能会有些问题,如下设置即可

3.对于用惯了vs的你来说,可能已经适应了vs的智能提示功能,在eclipse中这点可能做得没有vs好,你只有在输入“.”之后才能出现提示,如果你想让它像vs中一样随时智能提示和补全代码的话,你可以window—>preference打开设置面板如下

将标识的地方的”.”改成“abcdefghijklmnopqrstuvwxyz.”保存就ok了。

4.Xml代码提示和补全功能设置如下:

即将图中标识地方改成"<=:abcdefghigklmnopqrstuvwxyz@ "即可。

自己对于Android开发和java的使用还都处于摸索当中,难免出现疏漏和错误,还望大家多多批评指正,和你们共勉!

.Net码农学Android---系统架构和基本概念的更多相关文章

  1. Android系统架构与系统源码目录

    前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...

  2. (转)android系统架构及源码目录结构

    转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...

  3. Android源码分析一 Android系统架构

    一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...

  4. Android进阶(十一)Android系统架构讲解

    如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...

  5. Android进阶加密-第1章-Android系统架构-读书笔记

    第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...

  6. Android 笔记之 Android 系统架构

    Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...

  7. Android零基础入门第2节:Android 系统架构和应用组件那些事

    原文:Android零基础入门第2节:Android 系统架构和应用组件那些事 继上一期浅谈了Android的前世今生,这一期一起来大致回顾一下Android 系统架构和应用组件. 一.Android ...

  8. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  9. 我收藏的技术知识图(每张都是大图)关于XX背后的知识、技术图,例如:Linux、Nginx架构、PHP知识卡、机会、HTML5移动、Android系统架构、YII架构的典型流程、Css知识表

    我收藏的技术知识图(每张都是大图) HTML5Linux/Unix系统设计思想读书笔记 LinuxMVCJava线程MVCSpring MVCCSS3Nginx架构VimCliCommandsPHP知 ...

随机推荐

  1. cxGrid使用汇总2

    17. 怎样设计多表头的cxGrid? 解决:cxGrid可以解决如下的表头: --------------------------------- | 说明1 | 说明2 | ------------ ...

  2. HDU 3038 How Many Answers Are Wrong (并查集)

    How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  3. .Net (MVC) 随机生成验证码

    以前一直对C#的GDI画图部分知识点不怎么用所以忘得差不多了,这两天正好公司要做一个博客系统,其中一个需求就是留言时为了防止恶意攻击必须填写验证码,正好借着这个机会复习了一下,以下是实现代码,写的比较 ...

  4. BZOJ 3713

    Description 斐波那契数列的定义为:k=0或1时,F[k]=k:k>1时,F[k]=F[k-1]+F[k-2].数列的开头几项为0,1,1,2,3,5,8,13,21,34,55,…你 ...

  5. fiddler 记录一些以前不熟悉的东西

    fidddler已经用了3年了,一般就是抓包,看基本的信息,然后就是本地文件替换网络文件. 然后有一些很有用的东西的却没有深入的学习过.  -_-!. 抓https的包 fiddler的过滤器的使用 ...

  6. 深入浅出ExtJS 第三章 表格控件

    3.1 表格的特性简介 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; >.表格由类Ext.grid.GridPanel定义,继承自 ...

  7. 学习Slim Framework for PHP v3 ( 二)

    昨天说到能够成功将本地的URL通过在index.php 中添加get(pattern,clouser)路由到指定的处理类中,处理后(这里指存入数据库中),然后返回response在浏览器中显示. 昨天 ...

  8. js中Frame框架的属性获取(1)

    js中window和document对象及如何操作iframe 一. window对象 . 什么是window对象? Window对象表示浏览器打开的窗口.如果文档包含iframe或者是frame标签 ...

  9. table-layout:fixed 属性的解说

    table-layout:fixed 属性的解说如果想要一个table固定大小,里面的文字强制换行(尤其是在一长串英文文本,并且中间无空格分隔的情况下),以达到使过长的文字不撑破表格的目的,一般是使用 ...

  10. Javascript之图片上传预览

    使用Javascript之图片上传预览,我们无需上传到服务器中,兼容所有浏览器. 关键方法是使用微软库filter:progid:DXImageTransform.Microsoft.AlphaIma ...