Android基础
今天学习Android基本环境及基础知识,正确来说是重新温习Android知识,因为初次接触Android开发已经是两年前的事,如今又回到Android开发依然那么熟悉,依然可以让人很兴奋,Android选择了以java为基础让众多java平台的开发者偷笑了……
很多书本在开端长篇大论Android的起源,像讲故事一样,但我们只需知道几点知识即可,剩下的后面再回来看故事也不迟,毕竟Android是拿来开发不是拿来讲故事。Android是由Google领导的OHA(开发手持设备联盟)公开发布的,并且开放源代码,Google在里面发挥了挑大旗的责任,现在都还是,Android的爷爷是Andy Rubin,后来任职于Google,再后来又离职了。现在大家担心的是Android系统愈加碎片化,但不知道这是好事还是坏事,以后再说。
Android是由Linux为核心的移动设备操作系统,主要架构分为四层:最低层就是linux kernel,提供硬件驱动、内存、进程、网络等等底层管理;接着的一层就是链接库和Android Runtime,链接库包含C链接库、SQLite函数库、WebKit函数库等等,Android Runtime主要包含核心库以及DVM(非常类似JVM的一种东东);再上来一层就是应用程序框架,也就是Android应用的各种框架规则;最顶层就是Android应用程序,直接面对用户,没话可说了。由此可见,我们绝大多数的应用开发者是在第三层玩,少数底层开发、架构设计研究者会到第二层玩(估计是要模拟出另一个Android系统了,就像 阿里云),第四层就没话可说了,只要考虑用户体验、用户操作。
好像讲了听到,像是讲故事了。但此故事非彼故事,这个过程是引导学习Android的基本架构,先从宏观方面一览众山小,而后在微观学习的时候举一反三,事半功倍,当然,这只是我的个人学习思路。下面还要继续啰嗦。
Android的1.X和2.X版本都是为手机准备的,3.X版本是专为平板准备的,而4.X版本是集大成者,大家都懂,而且还加入了未来的功能,可能应用到网络电视、其他家电设备等等,API Level更要分清楚,以便后面选择模拟器,以及应用的发布最低系统版本要求。Level 10以下是1.X和2.X的,属于低版本Android系统应用,可以兼容绝大多手持设备,但有一些高级功能就不能用,Level11~13是3.X的,开发平板应用的时候选择,Level14以上是4.X的属于高版本,可以使用高级功能,但可能有些旧的手机系统不支持。具体选择哪一个要看自身的产品定位喽,事实上智能机的更新换代速度也是惊人的。
搭建开发环境包括五样东西:OS、JDK、Eclipse、ADT、Android SDK,具体的安装教程网上一大堆,而且前三项也是java程序员最熟悉的了,只需在Eclipse中安装插件ADT再将Eclipse和SDK关联起来就OK了,以前这个方法很顺畅,但Google回家了以后就没那么容易了,这会让一些新手苦逼地折腾不少时间,所以我建议直接去下载整套环境,直接开发了,推荐地址http://pan.baidu.com/share/link?shareid=249563&uk=3358019106
搭建好开发环境后就直接开发吧,少年。新建一个项目的流程在网上一堆,没什么障碍。下面分析项目的文件目录架构。/src目录放的是程序的源代码,/bin目录放的是编译后的文件,这对java程序员太熟了,/gen文件夹放一个R.java文件,打开就知道它是个专门提供很多静态属性的类,记录各部分资源的地址位置,以便调用,不能修改,因此这个调用都是底层完成的,知道就好。/assets存放在这个目录下的文件,无论是 mp3 还是图片,都会被打包到发布包中。/res目录放置各种资源,如果/res 下存放的资源在应用中没有使用到,那么在 gen 下的 R.java 的文件中就不会显示,那么打包的时候就不会将这部分资源打包,减少了应用的发布文件大小,/drawable存放图片文件,注意图片名称必须是[a-z0-9_.]组成,drawable 目录下不能分子级目录,只能通过命名方法来加以区分,/raw 直接复制到设备中的任意文件,不会被编译,可以放数据库文件,/values存放字符串,颜色,数组等常量数据。可以任意命名,但是通常命名:color.xml、strings.xml、array.xml、styles.xml、dimens.xml(定义尺寸值:dimension value )。。。还有一些就是设置文件了。
然后?然后就是去背诵各种基本组件、属性、方法、调用细节……
参考http://www.inandroid.cn/bbs/thread-1401-1-1.html
Android基础的更多相关文章
- Android基础测试题(四)
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
- Android基础测试题(二)
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
- Mono.Android 基础
Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...
- 深入理解gradle编译-Android基础篇
深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- 基础4 Android基础
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
- Android基础总结(8)——服务
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- Android基础_web通信3
在Android基础_web通信2中,我运用的JSONObject是Android原生的json类,通过import org.json.JSONObject来导入. 还有另外一种更简单的方法,就是用G ...
- Android 基础:常用布局 介绍 & 使用(附 属性查询)
Android 基础:常用布局 介绍 & 使用(附 属性查询) 前言 在 Android开发中,绘制UI时常需各种布局 今天,我将全面介绍Android开发中最常用的五大布局 含 Andr ...
随机推荐
- Spark2.0自定义累加器
Spark2.0 自定义累加器 在2.0中使用自定义累加器需要继承AccumulatorV2这个抽象类,同时必须对以下6个方法进行实现: 1.reset 方法: 将累加器进行重置; abstract ...
- 利用linux漏洞进行提权
RHEL5—RHEL6下都可以提权 本人测试环境CenOS6.5:该方法只能用作与有root用户切换到普通用户的环境,如果是普通用户直接登录在执行最后一步的时候直接退出登录 $ mkdir /tmp/ ...
- jquery设置下拉菜单
jQuery代码 1,引用jQuery库 2,show方法 3,hide方法 <script type="text/javascript"> $function(){ ...
- hrbust 1481
/* 构造特定条件的68序列:给定目标串中6 8 68 86 这四种字串的个数a b p q ,输出所有满足条件的字符串中代表的数字最小的那个 // hrboj 1481 ______________ ...
- android 观察者模式
1:观察者模式: 1:使用场景:一般使用在自定义控件的事件点击监听上面(或者封装方法进行回调) 2:写观察者模式步骤: (1):声明一个接口 (2):接口里面封装一个抽象方法 (3):需要封装一个 ...
- 如何用css3实现一个图片的抖动或者弹跳
<li onmouseout="this.className='off'"><a href=""><img src=". ...
- js 循环切换图片
function changeLot(){ var minIndex = 1; var maxIndex = 100; var curIndex = 10; var src = $("ul ...
- C++ 取得系统当前时间
#include <time.h> //* 方法一 time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t= localtime(&tt); p ...
- 多节点ListView的加载效率
据说实际场景中node数量达到4k~6k,ListView就崩溃了.(怎么个崩溃法未知) 小试了一下,10w个node毫无压力.(win7 vs2010 .net2.0) 有意思的地方在于,动态添加如 ...
- Bandpass Signals(带通信号,或称窄带信号)
带通信号 一个实的带通信号$x(t)$可以表示为 \[x(t) = r(t)\cos (2\pi f_0 t + \phi_x(t)) \] 其中$r(t)$是幅度调制或包络,$\phi_x(t)$是 ...