【转自总监】Android开发学习笔记

买了Android手机,经过了一天的尝鲜期之后,开始学习Android编程开发了。毕竟以后学院的《移动设备开发》这门课将由我来上。没办法,三十岁的老程序员又开始学习编程了。

记录一些学习笔记,持续更新中。

================================================================

Part 1 基础部分

Android分层:Hardware -> Linux Kernel -> Dalvik VM -> Android Libraries -> App

Dalvik不是标准java实现,增加了自有的指令,基于寄存器的虚拟机,很多代码来自Apache Harmony (这个和谐啊)

  • 单个可执行文件:.class -> .dex的文件。
  • 打包后的文件:.jar -> .apk

Android Libraries都以android namespace开头,包括view, app, util, widget, webkit等。

Android支持多任务,系统同时可以运行6个任务,超过6个将会被杀死,长按home按钮可以看到正在运行的6个任务。

Android每个任务都运行在独立的linux进程中,有独立的dalvik实例,并且有独立的用户ID。(这个太狠了,比.NET啥的都狠)不过也有办法让多个任务运行在同一个instance中,共享同一个 vm instance。

Android的设备不可能做到iphone一样只有一个按钮,至少要有home, back和context menu三个按键。

盈利模式:Android Market分成 + Google Service


Part 2 开发环境搭建

所需内容:JDK + eclipse + Android SDK + ADT(Google开发的Eclipse扩展插件)

编程语言:SDK支持java,NDK支持C/C++,另外开发还可以用Simple语言,类BASIC


Part 3 开发起步

一个由IDE生成的Android项目包括如下文件:

|   .classpath // xml路径文件

|   .project // xml项目文件

|   AndroidManifest.xml // android程序配置文件

|   default.properties // android的build system用的

+---.settings    // 设置信息

+---assets // 目前暂时为空

+---bin // 编译生成的东西

|   |   classes.dex // delvik vm的可执行文件

|   |   HelloAndroid.apk // android的可执行文件

|   |   resources.ap_ // 资源文件

|   \---com

|       \---hezongjian // java编译生成的class

|               MyActivity.class

|               R.class         

+---gen // R.java,类似于resource.h

|   \---com // IDE自动管理,定义一些常量

|       \---hezongjian

|               R.java

|               

+---res // 资源

|   +---drawable-hdpi // 各种分辨率的资源     

|   +---drawable-ldpi

|   +---drawable-mdpi    

|   +---layout // 界面UI布局

|   |       main.xml      // 主界面布局xml文件

|   \---values

|           strings.xml      // 字符串资源 

\---src // 源代码目录

    \---com

        \---hezongjian

                MyActivity.java // 主程序java文件

 

android程序UI采用流行的xml文件定义,例如main.xml,可以在xml中设定各个控件。

 

主java文件的内容

 

public class MyActivity extends Activity {  // 从Activity继承一个自己的行动

    public void onCreate(Bundle savedInstanceState) {  // 重写onCreate

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);  // 根据xml文件来设置view的内容

    }

}

下面是增加messagebox的内容,方法是用android.widget.Toast中的方法。这个对话框过一会儿自己会消失,跟Windows上的不一样。

public boolean onTouchEvent(MotionEvent event) {

Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();

return super.onTouchEvent(event);

}

或者也可以这样:

 

AlertDialog.Builder alert = new AlertDialog.Builder(this)

alert.setTitle("Title");  

alert.setMessage("Hello World");

alert.show();

用android.app下的AlertDialog来实现,不过AlertDialog功能比较强大,在这里是大炮打蚊子了。

 

Android应用程序由如下几个部分构成,但都不是必须的:

  • Activity: 就是一个window,当然和window不一样。
  • Broadcast Receiver:就是接受系统广播的东西
  • Content Provider:向其他程序提供数据,例如你是一个杀毒软件,你要向其它程序提供当前系统安全级别
  • Service: 就是一个service。

Android的task就是一个Activity的stack。一个task可以调用其他程序中的activity,然后放在自己的task stack里面,这样看起来其它任务就成了自己的一部分。这个设计比树形的windows tree要新颖多了。

这些部分需要由Intent来组合。Intent是一个非常抽象的东西。看了很多中文解释或翻译都不明白。而英文原版网页被GFW给Ban了。无奈FQ看developer.android.com上的东西,哎呀,再清楚明白不过了。估计需要文章再详细解释了。

 

附学习资源:

有一天我正在上网查资料,突然弹出来一个网页,很黄很暴力,我赶紧把它加入收藏夹了。这个被加入收藏夹的网站叫做:http://androidappdocs.appspot.com/index.html,显然是某人用谷歌的App Engine做的一个东西。但是有完整的Android文档映像,并且可以下载sdk,不用再FQ了,不错。

本来想写一篇关于Intent的文章,看了几篇国内中文文章和书籍,都云里雾里,结果看了英文介绍之后,突然发现啥都清楚了。就像重演了无数次的计算机文献杯具一样,E文能看懂,翻译过来用自己的母语就看不懂了。后来在不经意之间,发现了某人写的一篇文章:

Intent 解析

http://zhubin215130.javaeye.com/blog/614913

解释形象生动,十分传神。

 

后来又顺藤摸瓜,发现了一些系列文章,解释也非常到位,并且风趣幽默,通俗易懂,贴近网民生活,尤其是系列第一篇可以当小说看:

深入Android系列文章

http://www.cnblogs.com/duguguiyu/

 

你可能感兴趣的:(Android开发)