Android产品实战从零开始(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-17 05:26:02

点击下载

作者:黄宇健

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Android产品实战从零开始

Android产品实战从零开始试读:

前言

是在2010年的时候开始接触Android的。那时候Android吸引我我的原因很简单:苹果的体验,诺基亚的价格。后来又在程序员杂志中看到一篇介绍Android开发的文章,非常惊讶地发现Android的开发语言是我最熟悉的Java,于是就开始了Android的开发之路。

Android给我带来的是完全不同于桌面应用、网站的体验,开发Android应用对我来说就是一种乐趣。把这种乐趣和读者们一起分享也是我写这本书的初衷之一。

2012年的夏天我出版了我的第一本Android入门书籍。现在来看,当时写的那本书不够完善,因此才会有写这第二本书的想法。人总是在学习进步的过程中,就算是现在来看刚开始写这本书的半年前,也会发现有些纰漏及不妥的地方,虽然在写后面的章节会慢慢地回过头去修改前面的内容,但总还是觉得不够好,也只能说,如果要磨出一本好书的话,这点时间确实不够。而IT行业却是日新月异的行业,这本书截稿的时候刚好推出了Android 4.3,但是等到出版的时候可能已经进化到Android 5.0了。如果要等万事都完美了再来出版这本书,那恐怕还赶不上更新速度。

站在一个普通读者的角度上来说,对于工具类的开发书籍,我的使用方法是:在电脑上读代码而不是在书里。在电脑上读代码好处很多,在读代码时,Ctrl一下就可以跳到那个方法,跳来跳去非常方便,而书就做不到这一点。因此我尽量少在书中贴不必要的代码,本书配套资料中会有附带本书讲到的所有代码,读者可以放到电脑上读。但是作为技术书籍,代码肯定是会有的,而且还占比较大的篇幅。在书中,我尽量用图来说话,将每个模块都分步讲解,希望广大读者可以接受这种方式。

由于时间匆促,学识有限,书中不足和疏漏之处在所难免,恳请广大读者将意见与建议反馈给我们,以便在后续版本中不断改进和完善。

1. 本书的章节安排

本书一共9个章节,各章的重点分别为:

第1章 Android环境搭建、Android开发框架、ADT的使用。

第2章 四大组件、五大布局、基本控件的使用。

第3章 ListView、数据存储、Notification、AppWidget,讲解应用Timetable。

第4章 ExpandableListView、Animation,讲解应用to-do。

第5章 SurfaceView、浮窗,讲解应用Clock。

第6章 调用系统服务、获取系统信息,讲解应用Easearch。

第7章 地图开发、传感器开发、相机开发、Canvas绘图,讲解应用MyWhere。

第8章 fragment、ViewFlipper、MediaPlayer,讲解应用YiRstr。

第9章 ViewPager、PagerTitleStrip、GridLayout、增强Notification。

本书以“总-分”的形式安排各个章节,先讲解章节中使用的各个知识点,再讲解这些知识点如何运用到本书当中。

2. 本书适合的读者

◇ 略懂Java的程序员;

◇ Android开发的初学者;

◇ 完全没有尝试过Android开发的开发人员。

3. 鸣谢

感谢总是不遗余力帮助我的郭老师,总是能给我带来正能量的Maya,只有数面之缘的Stan夫妇,AIESEC的Connie以及Alex,当然还有老爸老妈,一起玩乐的兄弟们。黄宇健2014年4月第一章 Android入门第一节 Android系统概述Android世界百态

Android是一种基于Linux的自由及开放源代码的操作系统,主要适用于便携设备,如智能手机和平板电脑……我知道读者懂得怎么上网百度,所以我不打算把一整段百度百科的文字放到这本书中来,但是有几点重要的信息是读者们应该知道的。

Why Android

根据2012年11月的数据,Android占据全球智能手机操作系统市场76%的份额,而中国市场占有率为90%。Android已经是而且将来也会继续稳坐智能手机头把交椅的宝座,因为不管什么厂商都可以生产Android手机,现在只要几百元就能买到一部看起来还不错的Android手机。

Android的开发语言

Android的SDK基于Java实现,但这不意味着必须用Java才可以编写Android程序。Google公司在2011年初发布了Android NDK(Native Development Kit),这使得用C语言编写Android程序变得更加方便。当然,在没有对速度要求特别高的情况下,都是使用Java语言编写。不幸的是,本书没有涉及任何对速度要求特别高的应用。这也意味着,这是一本通俗的技术书。

Android发展史

我知道如果我煞有介事地介绍Android从1.0到4.2各个版本的话,你们也不会看的,所以我打算介绍Android每个版本的特性(当然,我指的是原生Android,不经过第三方改造的Android系统)。

1.0(图1-1):Android的老大哥,首次搭载在Google太子G1(HTC代工)身上,这个版本拥有Android最基本的特性:可以下拉的通知栏,桌面插件(当然,打电话发短信上网什么的就不一一列举了)。

1.1:首创OTA升级功能(就是在不影响你手机的情况下升级系统,这下不用刷机了),但是因为各种问题,“胎死腹中”……

1.5:虚拟键盘(什么?Android 1.0不支持虚拟键盘?)、第三方桌面控件(是的没错,Android 1.0只能支持手机自带的控件)。还有一点,从这个版本开始,Google为每个Android版本起一个代号,代号首字母在字母表中的位置将能够反映这是Android的第几个版本,比如CUPCAKE的“C”意味着这是Android的第三个版本。所以Android 1.5也叫做“纸杯蛋糕”(Cupcake)。

1.6:代号“甜甜圈”(Donut),亮点不多,增加了全局搜索功能。

2.0/2.0.1/2.1:代号“松饼”(Eclair),增加动态壁纸(很好玩)、语音输入(不得不说Google的语音服务是比iOS早得多,只不过因为Siri是Steve的作品,所以才引起这么多关注),滑动解锁(没错,在这之前,一般是按menu键来解锁的)。

图1-1为Android 1.x解锁界面与Android 2.0的比较。图1-1 Android 1.x解锁界面与Android 2.0的比较

2.2:代号“冻酸奶”(Froyo),都是一些细节(这些细节有些厂商已经做到了,比如主屏幕数量,快捷方式,使用按钮取代抽屉来进入应用列表等),没有什么特别的东西。

2.3:代号“姜饼”(Gingerbread),首次搭载在Google二皇子Nexus S(三星代工;同时,也是本书使用的手机,但是系统是Android 4.0)身上,加强了复制粘贴功能,增加前置摄像头。

3.x(图1-2):代号“蜂巢”(Honeycomb),为平板而生,最终归并入Android大阵营。这个版本的特点有:取消实体按键,增加Action Bar、Fragment,超炫的多任务系统。特别的是,这个版本让我印象最深刻的是它自带的时钟控件。

4.0(图1-3):代号“冰激凌三明治”(Ice Cream Sandwich)。在经历了短暂的平板手机系统分家之后(Android 3.x和其他),Google把它们统一了起来,于是有了冰激凌三明治。搭载于Google三皇子Galaxy Nexus(三星代工)身上,这个版本继承了蜂巢的特性,主题颜色由白变黑,使用全新UI(至于有多全新不在这一一赘述),使用全新Roboto字体……最后一点,会有一个Google搜索框会如影随形地跟着你的屏幕。

4.1/4.2(图1-4):代号“果冻豆”(Jelly Bean),推出Google Now,以此证明在搜索方面iOS不是其对手。图1-2 Android 3.x设置界面图1-3 Android 4.0与Android 2.3界面对比图1-4 Google Now界面

4.3(图1-5):代号依然是Jelly Bean,于2013年7月25日推出,系统做出了多个细节改进,最大的变化是可以支持多用户。图1-5 Android 4.3支持多用户我能用Android来做什么

很多很多,几乎是为所欲为。我个人认为界面无图标化会是未来的发展趋势。我们最需要的那几个功能可以通过手势来切换。碰巧的是,就在笔者写这一章的今天(2013年1月3日),Ubuntu发布了移动版系统(图1-6(a)),该系统的应用程序启动栏的操作与我在之前书中跟大家分享的“快速启动”(图1-6(b))应用的操作有那么一点点神似。Android可以让你做一些你觉得很酷的东西,让你捣鼓一些全新的体验,全新的设计。图1-6 Ubuntu移动版与快速启动

两年前我替别人写了一个课表的程序,只是因为在网上找不到一款专用的、好用的课表记录应用。后来这块细分领域有超级课程表和课程格子(图1-7),其中前者已经进行了千万级的A轮融资。

再后来,我受Paul Graham的启发,打算做一个让用户自己用图形界面“编程”,创建简单的应用。做到一半的时候发现ITTT火了,然后Moto的Razr手机自带了一个叫做“智能操作”的应用(图1-8)。没错,这就是我想要做的东西。图1-7 超级课程表和课程格子图1-8 Razr手机的“智能操作”应用

想法总是会有的。这世界上有这么多人在发呆在思考,总会想出一样的东西。不同的是,那些成功的人一定会马上去做。创意本质上是不受法律保护的,你想得出来,我也想得出来。更何况,成功的往往是使用轮子的人,而不是发明轮子的人。

Android就是轮子,同样iOS也是轮子,WP、WebOS也是。如果你操作系统课的成绩不够好也没关系,你是使用轮子的那个人,而不是发明轮子的那个人。Android特性

浮窗

我记得最早在手机上看到浮窗这个东西的是当时雄霸一方的塞班。这让我印象很深刻,特别是使用某即时聊天工具的时候(你懂的)。Android给开发者开放了这个API(更确切地说应该是,添加系统窗口的API,而不仅仅是浮窗)。有了这个接口你可以做很多有意思的东西,比如说让系统进入“宕机模式”等等。

替换主屏

这一点是Android中最酷的。想想看,你可以通过简单的代码替换原有的主屏,让你的手机变得独一无二。

替换解锁界面

既然可以替换主屏,那么替换掉解锁界面也是没问题的。

窗口小部件

Android系统最直接表现的特点。窗口小部件是一个用户体验很好的东西,很方便实用。

通知中心

曾经是,在被iOS等众多系统模仿了之后也不算是了。本书特色

● 讲代码而不是贴代码。本书配套资料中有所有程序的代码源文件,并且是注释过的,我只会在书中介绍程序中的重要代码,图文并茂,尽量保证读者能看懂。

● 好看。诚然,我不是设计师,本书中的程序的界面风格不都是独创的。即便有些东西是我自己想的,但是谁又能保证,这些风格不是受到某些特定的影响在你脑海里留下来的?就算有人可以保证这点,又有谁能保证这个想法我是第一个想到的?“好的艺术家复制,伟大的艺术家偷窃”,如果你看过《硅谷传奇》,你会熟悉这句话的。我希望就算你没有把这本书看完,也能够非常优雅地摆放在你的书柜里。

● 关注移动互联网动态。本书中不只会介绍技术,更会介绍移动互联网发展动态,就像之前提到的Ubuntu移动版(当然,在我写这本书的时候是“最新动态”,等到出版的时候就是旧新闻了)。

● 关注用户体验。本书会引用交互设计中经典的案例、书籍,来说明为什么要这么做。第二节 Android环境搭建

这一节中,我们会一步一步地把环境搭建起来。Android的开发环境搭建起来很方便,读者只需跟着我的步骤即可。下载和安装JDK

我们可以在Oracle的网站中下载到JDK进行Java的开发,登录网站http://www.oracle.com/technetwork/java/javase/downloads/index.html,选择JDK进行下载,当前的最新版本是Java 7。

在接下来的页面中选择要下载的版本,注意勾选Accept License Agreement,并选择自己适合的版本,如图1-9所示。

下载完成后进行安装,如图1-10所示。下载和安装Eclipse IDE以及Android SDK

Android提供了自带Android SDK以及ADT的Eclipse,登录网站http://developer.android.com/index.html进行下载,选择Get the SDK,如图1-11所示。

选择右边的大按钮进行下载,如图1-12所示。

下载完成之后,解压并打开根目录/eclipse/eclipse.exe。第一次打开的时候Eclipse会提醒你设置工作区间,这个工作区间会保存我们的配置信息、也是我们建立的工程所保存的路径。如果你不希望下次打开的时候再出现,可以勾选Use this as the default and do not ask again,如图1-13所示。图1-9 选择合适的版本进行下载图1-10 Java安装界面

第一次进入Eclipse环境,它会显示Welcome界面。单击左上角的还原按钮进入工作区间,如图1-14所示。

进入工作区间后,我们可以看到Eclipse的Java视图,如图1-15所示。

关于Eclipse的简单介绍我们就先到这里,在接下来的章节中我还会详细介绍它的使用。图1-11 Android Developers页面图1-12 下载SDK图1-13 选择工作空间图1-14 Eclipse的Welcome界面图1-15 Eclipse的Java视图更新Android SDK

从Android官网下载的SDK bundle包只包含了最新的SDK开发包,我们需要使用低版本的SDK进行开发,因此我们需要下载低版本的SDK。如图1-16所示,选择Window→Android SDK Manager。

勾选需要的Packages,单击Install packages,如图1-17所示。

选择Accept License,单击Install进行安装,如图1-18所示。图1-16 选择Android SDK Manager图1-17 安装需要的包

安装完成之后,Android SDK Manager会自动搜索可供下载的SDK版本,如图1-19所示。

这时候开始下载我们需要的SDK,并在界面上动态显示下载过程,如图1-20所示。

当看到Done loading packages时,就说明SDK已经完成了下载,如图1-21所示。图1-18 安装Android SDK图1-19 可供下载的SDK版本图1-20 下载动态图1-21 SDK下载完成第三节 Android应用程序架构

搭建好开发环境后,就可以跟这个世界“say hello”了。当然,我指的是创建HelloWorld工程。不同于普通的Java工程,一个Android工程包含了除Java代码之外的许多文件,这些文件在工程中发挥着很大的作用,它们可以帮助我们更方便、更灵活地开发Android应用。我们也可以把一个Android工程看作框架。这一节我们就来讲Android工程的创建以及Android工程的框架。创建第一个Android项目

第一步,选择创建工程:打开Eclipse,在File菜单中选择New→Android Application Project,如图1-22所示。在Android包中选择Android Project,单击Next按钮。图1-22 选择创建工程知识扩充如果看不到Android Application Project这个选项,在File菜单中选择New→Other…,在Android包中选择Android Project,单击Next按钮。

第一个页面(图1-23),填写应用名、工程名和包名,选择Build SDK,也就是使用哪个版本的SDK开发。由于Android是向上兼容的,所以尽量用低版本进行开发。图1-23 选择开发SDK

第二个页面(图1-24)用来自定义图标,没多大用处,因为我们一般都会使用自己的图标。图1-24 选择图标

第三个页面(图1-25)选择是否要创建Activity,如果勾选的话还有第四步,没有的话就可以直接完成。由于我们使用的SDK版本为7,不能支持Fragment,所以只能选择BlankActivity。图1-25 创建Activity

第四个页面(图1-26)设置Activity的名称、布局。由于我们使用的SDK版本不高,不能支持导航类型,所以也只能选择None。图1-26 新建一个Activity知识扩充不同版本的ADT创建Android程序的过程可能不同,但是大同小异。理论上来说,填好包名、应用名后点Next按钮即可。

如图1-27所示,创建完成之后,我们可以看到一个Android工程默认包含了如下文件:● src文件夹:Java源代码文件。● gen文件夹:存放R.java文件。● R.java:封装静态变量,根据

drawable文件、values文件和layout

文件动态改变。● Android Dependencies:Android库。● assets文件夹:存放不需要编译成二

进制的文件。● bin文件夹:存放apk、图片资源等二

进制文件。● res文件夹:包含drawable文件夹、

layout文件夹和values文件夹。● drawable文件夹:存放图片文件(格

式为PNG)。● layout文件夹:存放布局文件(格式

为xml)。● menu文件夹:存放菜单布局文件(格式为xml)。图1-27 一个Android工程的框架● values文件夹:存放参数文件。● AndroidManifest.xml:Android配置文件。● proguard-project.txt:用于混淆代码,防止反编译。● project.properties:保存target信息。

这些文件共同构成了一个Android的架构。这些文件的详细解释我们会在接下来的章节中介绍。但是一般来说,我们只需要关心AndroidManifest.xml文件和res文件夹,前者是Android的配置文件,后者是Android的资源文件。此外,R.java文件是系统自动生成的,开发者无需手动修改。

我们运行一下这个应用,在工程上右击,选择Run as→Android Application,如图1-28所示。图1-28 运行工程

如果没有连接Android设备,Eclipse会弹出提示。此时可以单击Yes按钮来创建一个模拟器,如图1-29所示。图1-29 提示找不到设备

弹出模拟器管理窗口,单击New按钮进行创建,如图1-30所示。图1-30 Android模拟器管理

在创建AVD窗口中填写Name、选择Target(Android 2.1)、在Size一栏中填写“100”,单击Create AVD,这样一来我们就创建了一个拥有100MB内存的Android 2.1的模拟器了,如图1-31所示。图1-31 创建模拟器

创建完成后,返回到Android Virtual Device Manager窗口。此时,你创建的模拟器就会显示在列表中,如图1-32所示。图1-32 启动模拟器

单击Start按钮,弹出确认窗口,单击Launch按钮,启动模拟器并运行我们的应用,如图1-33所示。

在模拟器上就可以看到我们的应用,如图1-34所示。

值得注意的是,模拟器的启动较慢,所以我们在使用模拟器开发应用的时候不需要把模拟器关闭,避免重启模拟器的麻烦。图1-33 工程的运行结果图1-34 运行完成的应用AndroidManifest.xml文件

我们要先了解activity的概念:一个Android应用(application),它可能包含多个activity。而一个activity就相当于一个界面、一个窗口。Activity类似于Windows中“窗口”的概念,用于与用户进行交互。Android应用中的每一个activity都要继承于Activity这个类,并且在AndroidManifest.xml文件中标明出来。AndroidManifest.xml文件描述了一个Android应用的应用名称、图标、包含多少个组件、权限等信息。

我们先来看创建的HelloWorld工程生成的AndroidManifest.xml文件:

最外层的节点为,它的常用属性有如下几个。● package:包名。● android:versionCode:版本号。● android:versionName:版本名称。

常用的第二层节点有如下几个。● uses-sdk:描述SDK属性,包含:

◆ android:minSdkVersion,需要最低的SDK版本。

◆ android:targetSdkVersion,最适合的SDK版本,建议删去。● uses-permissions:包含属性android:name,用于描述权限。● application:描述应用的组件、应用名等信息,包含属性:

◆ android:icon:描述应用的图标。

◆ android:label:描述应用名。

◆ android:theme:描述应用主题。

第三层节点包含于application,包括activity、service、receiver和provider等。

我们在这里先讨论activity。activity是一个程序中跟用户交互的组件,它必须继承于Activity这个类,这里只是声明了这个activity的位置。

代码中包含了一个点“.”,这表示该类在声明的包下:package="com.shinado.helloworld"

也就是说,它指向了包com.shinado.helloworld指向了MainActivity这个类。当然,如果你不幸在另外一个包里写了一个Activity,那么就要在android:name节点中声明完整的类的地址。● android:name:Activity的位置。● android:label:用于设置该Activity的标题。

第四层intent-filter是一个过滤器,用于过滤广播、动作等信息,它包含了第五层节点。

◆ action:包含属性android:name,一般我们常见到的android.intent.action.MAIN表示这个activity是该应用的入口。

◆ category:包含属性android:name,一般我们常见的android.intent.category.LAUNCHER表示应用会出现在程序的列表中。资源文件夹

我们可以看到res文件夹里包含了7个子文件夹,如图1-35所示。

drawable文件夹

drawable文件夹有如下4个。● drawable-xhdpi:存放超高分辨率的

图片,一般为平板。● drawable-hdpi:存放高分辨率的图

片,如WVGA(480×

800),FWVGA(480×854)。图1-35 res文件夹● drawable-mdpi:存放中等分辨率的

图片,如HVGA(320×480)。● drawable-ldpi:存放低分辨率的图片,如QVGA(240×320)。

这样的好处是系统可以通过手机的分辨率来使用不同分辨率下的图片,实现屏幕自适应。关于这一点,我们会在第2章中继续讲解。

细心的读者可能会发现在AndroidManifest.xml文件中出现过“@drawable/ic_launcher”这样的字符串,它表示引用了drawable文件夹下的ic_launcher资源。

layout文件夹

再来看layout文件夹,这个文件夹存放应用的布局文件,main.xml文件代码如下:

这个布局文件表示在一个相对布局中有一个居中的TextView(也就是普通文本),它显示的文本是string资源中的hello_world字符串(注意,不是字符串“hello_world”)。

在布局文件中一般有这样几个节点:● android:id:以“@+id/”开头,声明控件的id,以便于在Java代

码中通过findViewById方法获得。● android:layout_width:控件的宽度,可选参数:

◆ fill_parent:填充父容器。

◆ wrap_content:填充子容器。

◆ 数值,以px/dp等单位结束。● android:layout_height:控件的长度。可选参数与

android:layout_width相同。● android:gravity:控件子容器的重心。● android:layout_gravity:控件相对于父容器的重心。

values文件夹

values文件夹下的string.xml代码如下:

我们可以看到名为“hello_world”的string节点的值为“Hello World!”。这也就是说最终在程序中显示的文本为“Hello World!”,如图1-36所示。

最后一点需要注意的是,资源文件只能以小写字母和下划线作首字母,随后的名字中只能出现[a-z0-9_.]这些字符,否则就会造成错误。

]qc[2012-12-07 11:19:48-ShLauncher]res\drawabie\ABC.png:Invalid file name:must contain only[a-z0-9-.]

除了string文件之外,还会有color和style文件。前者保存颜色代码,后者保存样式代码。layout文件中经常会引用这几个常用文件:● @string/:引用strings.xml中的文

字。● @color/:引用color.xml中的颜色代

码。● @drawable/:引用drawable中的图

片或者xml文件。● @style/:引用styles.xml中的样式。

menu文件夹图1-36 menu菜单

menu文件夹保存菜单的设置,当我们按下menu键的时候,就会显示该菜单,如图1-36所示。

当然,你需要重写Activity的方法才能实现。这点后面会详细讲。R.java

先来看R.java的代码:

R.java这个文件是系统自动生成的,当你在res文件中添加图片、布局文件、values字段、布局中的id等时,R.java就会自动生成静态的int变量。

我们在main.xml文件中的TextView节点中加入id:

保存之后,R.java会自动在内部类id中增加一个静态int型变量test(也就是我们定义的id):public static final int test=0x7f070000;程序的实现原理

上一小节中,我们把main.xml中的TextView增加了一个id。此时,我们修改一下src文件夹下的文件MainActivity.java:

setContentView方法是Activity中最基本的方法之一,它定义了Activity的界面显示内容,而这个界面的内容就是写在layout文件夹的文件中。在本例中,setContentView(R.layout.main)就表示设置Activity的界面布局为layout文件夹下的main.xml文件所定义的布局。

运行一下,程序的截图如图1-37所示。

我们可以看到,程序显示的文本变成了“text changed”,字体也变大了。这是因为我们通过反射获得layout文件中定义的TextView组件(也就是findViewById(R.id.test)这个方法),并修改这个组件的文本和字体大小。

在运行Android程序时,系统先查看AndroidManifest.xml文件,看程序的入口是哪个Activity;找到那个Activity之后看这个Activity设置的是哪个layout文件(setContentView方法),然后加载该布局文件,显示在界面上。AndroidManifest.xml、Activity、layout文件、values文件和R.java文件的关系如图1-38所示。图1-37 修改文字图1-38 关系图第四节 使用ADTLogCat

一般来说,在Java中我们使用System.out.println方法来输出某个值。如果用户在代码中使用了System.out.println方法,那么不会在控制台里看到输出。因为Android把输出的结果交给了LogCat工具。

首先,我们要调出LogCat窗口,在Eclipse中的Window菜单中选择Show View→Other,在Show View窗口中的Android文件夹中选中LogCat(你会看到这里有两个LogCat,其中一个声明deprecated,也就是不建议使用),单击OK按钮,如图1-39所示。图1-39 显示LogCat

此时,Eclipse中的输出栏就会多一个LogCat窗口,如图1-40所示。图1-40 LogCat窗口

我们可以通过右上方的圆形按钮来切换Log的内容。

Log常用的方法有以下5个。● Log.v(String tag,String msg):对应圆形按钮V,表示啰嗦。● Log.d(String tag,String msg):对应圆形按钮D,表示debug。● Log.i(String tag,String msg):对应圆形按钮I,表示提示信息。● Log.w(String tag,String msg):对应圆形按钮W,表示警告。● Log.e(String tag,String msg):对应圆形按钮E,表示错误。

我们来试一下Log的使用,在HelloWorldActivity.java中的OnCreate方法中添加代码:Log.v("啰嗦","verbose");Log.d("调试","debug");Log.i("信息","information");Log.w("警告","warnning");Log.e("错误","error");

查看一下LogCat会看到Eclipse下方的输出信息,看起来色彩斑斓,如图1-41所示。图1-41 LogCat输出信息DDMS(Dalvik Debug Monitor Server)

DDMS是个非常好用的东西,它能给我们提供设备截屏,查看文件(删了360手机助手吧)、查看进程、线程以及堆信息、查看广播状态信息、模拟电话呼叫、接收短信、模拟地理坐标等功能。开发者可以通过Eclipse的右上角的添加按钮来添加DDMS视图,如图1-42所示。图1-42 添加DDMS视图

窗口的左侧是设备以及设备的进程信息,右侧是各个功能的视图,如图1-43所示。图1-43 设备进程信息

截图

在左边的窗口中选中设备,单击照相的小按钮,出现手机屏幕的实时图像(当然手机要连上电脑),如图1-44所示。图1-44 截屏

查看UI布局

最新版的ADT中增加了这个强大的功能,选中设备后单击手机的小按钮,可以查看界面的UI布局,如图1-45所示。

查看线程

在窗口左侧的进程栏中,选择要查看的进程,单击Upgrade Threads按钮,这个进程就会出现一个线程小图标,如图1-46所示。

在右侧的窗口中选择Threads栏,就会显示该进程下的所有线程,双击某个线程,线程框的下方会显示这个线程是从哪里启动的,如图1-47所示。图1-45 查看UI布局图1-46 更新进程信息图1-47 查看线程

查看内存分配

在进程栏中,选择要查看的进程,单击Upgrade Heap按钮,这个进程就会出现一个绿色小图标,如图1-48所示。图1-48 更新heap信息

同样,如图1-49所示,在右侧的窗口中选择Allocation Tracker栏,显示该进程下的内存使用情况。单击Start Tracking按钮,开始跟踪内存分配;单击Get Allocation,显示结果。双击某一栏,下方会显示哪个地方产生这个allocation。这个工具非常好用,特别是在进行游戏类的开发时,它会帮你分析你的瓶颈在哪里,帮你查看哪些地方可以加速,查看哪些变量可以重复使用。图1-49 查看内存分配第二章 Android基础产品开发从这里开始

清单

Demo代码:

\demo\Broadcast

\demo\ContentProvider

\demo\DrwableTest

\demo\HelloWorld

\demo\LayoutTest

\demo\WidgetTest

理论上来讲,学完这一章,你就可以做很多事情了。而且它不会花你太多的时间。抓住这几个要点:四大组件、布局、控件、Intent。第一节 Android四大组件

传说中的Android四大组件是Activity,Service,Broadcast Receiver,Content Provider,这个问题在面试的时候就像Activity的生命周期,Android的布局种类一样基础而重要。基本上,这几个问题

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载