Android 2.2开发初学者快速入门十一大秘技

移动开发 Android
本文为一位Android入门级开发者在经过三周学习Android收集整理的一份Android 2.2开发初学者的入门培训教程,从十一个方面把Android 2.2从配置到疑难解答都告诉给大家。

编者按:本文为一位***线的Android开发者在经过三周学习Android收集整理的一份Android 2.2开发初学者的入门培训教程。文章深浅得当,对于刚刚学习Android开发的朋友,这是一份非常好的教程。

一、环境配置和安装(Android 2.2)

参考《在Eclipse下搭建Android开发环境教程

1.1 JDK

1.2 SDK

下载地址

1.3 Eclipse 3.5 (Galileo)

下载地址

1.4 ADT 0.9.7

下载地址

1.5 安装

依次下载,按照文章步骤安装即可,注意安装SDK时,需要如下设置下:

不然更新不下来,那个链接地址被墙了。

二、Android系统架构

2.1Linux内核(Linux Kernel)

◆ Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的。

◆ Linux 内核是硬件和软件层之间的抽象层。 

2.2中间件

◆ 中间件包括两部分:核心库和运行时(libraries & Android runtime)

◆ 核心库包括,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;Media Framework 媒体库,负责支持图像,支持多种视频和音频的录制和回放;SQlite 数据库,一个功能强大的轻量级嵌入式关系数据库;WebKit 浏览器引擎等。

◆ Dalvik虚拟机:区别于Java虚拟机的是,每一个Android 应用程序都在它自己的进程中运行,都有一个属于自己的Dalvik 虚拟机,这一点可以让系统在运行时可以达到优化,程序间的影响大大降低。Dalvik虚拟机并非运行Java字节码,而是运行自己的字节码。

2.3应用程序框架(Application Framework)

◆ 丰富而又可扩展性的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 可嵌入的web 浏览器。

◆ 内容提供者(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。

◆ 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。

◆ 通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

◆ 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

2.4应用程序 (Applications)

◆ Android 系统会内置一些应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。

Phone Club——51CTO移动开发线下技术沙龙

活动日期:1月15日
本期主题:Android应用开发技术进阶
地点:北京市海淀区中关村南大街30号东联艺术工社
演讲讲师:范怀宇(网易)

#p#

三、Android系统包说明

◆android.app :提供高层的程序模型、提供基本的运行环境

◆android.content :包含各种的对设备上的数据进行访问和发布的类

◆android.database :通过内容提供者浏览和操作数据库

◆android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.

◆android.location :定位和相关服务的类

◆android.media :提供一些类管理多种音频、视频的媒体接口

◆android.net :提供帮助网络访问的类,超过通常的Java.net.* 接口

◆android.os :提供了系统服务、消息传输、IPC 机制

◆android.opengl :提供OpenGL 的工具

◆android.provider :提供类访问Android 的内容提供者

◆android.telephony :提供与拨打电话相关的API 交互

◆android.view :提供基础的用户界面接口框架

◆android.util :涉及工具性的方法,例如时间日期的操作

◆android.webkit :默认浏览器操作接口

◆android.widget :包含各种UI 元素(大部分是可见的)在应用程序的屏幕中使用

四、Android项目工程说明

◆src:存放java源代码。

◆gen:存放编译器自动生成的java代码,这个目录下的文件是系统自动维护的。

◆assets: 存放在这个目录下的文件,无论是mp3还是图片,都会被打包到发布包中。

◆res:资源文件目录,添加到这个目录下的文件都会在gen下的R.ava文件中显示出来;如果res下存放的资源在应用中没有使用到,那么在gen下的R.java的文件中就不会显示,那么打包的时候就不会将这部分资源打包,减少了应用的发布文件大小。

◆drawable:存放图片文件,注意图片名称必须是[a-z0-9_.]组成;drawable目录下不能分子级目录,只能通过命名方法来加以区分。

◆layout:存放与UI相关的布局文件,都是xml文件。

◆raw:直接复制到设备中的任意文件,不会被编译,可以放数据库文件。

◆values: 存放字符串,颜色,数组等常量数据。可以任意命名,但是通常命名:color.xml、strings.xml、array.xml、styles.xml、dimens.xml(定义尺寸值:dimension value)

◆xml:任意的XML文件,在运行时可以通过调用Resources.getXML()读取。

◆参见文献 。

Phone Club——51CTO移动开发线下技术沙龙

活动日期:1月15日
本期主题:Android应用开发技术进阶
地点:北京市海淀区中关村南大街30号东联艺术工社
演讲讲师:范怀宇(网易)

#p#

五、基本控件

5.1 文本框(TextView)、自动完成(AutoCompleteTextView)

自动完成的效果和代码

5.2 编辑框(EditText)

◆android:hint 内容为空时提醒的信息,如“请输入”

5.3 下拉列表(Spinner)

◆android:entries可以通过在strings.xml中指定string-array来设置选项。

5.4 进度条(ProgressBar)

效果和代码

5.5 拖动条(SeekBar)

5.6 评分条(RatingBar)

5.7 按钮(Button)、图片按钮(ImageButton)

5.8 图片框 (ImageView)、画廊(Gallery)

画廊效果

5.9 日期和时间(DatePicker、TimePicker)

5.10 单项选择(RadioGroup、RadioButton)、多项选择(CheckBox)

5.11 表格 (GridView)、列表(ListView)

GridView

ListView

5.12 对话框(AlertDialog)、对话框中的进度条(ProgressDialog)

AlertDialog

ProgressDialog

5.13 菜单(Menu)

5.14 提示(Toast)

类似于MessageBox,非模式窗口。如:

  1. Toast.makeText(this, "信息", Toast.LENGTH_SHORT).show(); 

六、布局和容器

6.1帧布局(FrameLayout)

放入其中的所有元素都被放置最左上的区域,无法为这些元素指定一个确切的位置。如果有多个子元素,那么后边的子元素的显示会重叠在前一个元素上。

6.2线性布局(LinearLayout)

常用布局,子元素按行或列依次排列。

◆android:layout_gravity是本元素对父元素的重力方向。

◆android:gravity是本元素所有子元素的重力方向。

6.3绝对布局(AbsoluteLayout)

可以让子元素指定准确的x/y坐标值,(0, 0)为左上角,没有页边框,允许元素之间互相重叠。

6.4相对布局(RelativeLayout)

允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)

6.5表格布局(TableLayout)

将子元素的位置分配到行(TableRow)中,注意不会显示边框线也不能够跨行合并单元格。

例子

6.6选项卡(TabWidget)

例子

Phone Club——51CTO移动开发线下技术沙龙

活动日期:1月15日
本期主题:Android应用开发技术进阶
地点:北京市海淀区中关村南大街30号东联艺术工社
演讲讲师:范怀宇(网易)

#p#

七、常用代码

7.1在当前Activity中启动另外一个Activity

  1. startActivity(new Intent(this,目标Activity.class)); 

7.2从当前ContentView从查找控件

  1. (Button)findViewById(R.id.btnAbout) 

R.id.btnAbout指控件id。

7.3获取屏幕宽高

  1. DisplayMetrics dm = new DisplayMetrics();  
  2. //获取窗口属性  
  3. getWindowManager().getDefaultDisplay().getMetrics(dm);  
  4.    
  5. int screenWidth = dm.widthPixels;//320  
  6. int screenHeight = dm.heightPixels;//480 

7.4无标题栏、全屏

  1. //无标题栏  
  2. requestWindowFeature(Window.FEATURE_NO_TITLE);  
  3. //全屏模式  
  4. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
  5. WindowManager.LayoutParams.FLAG_FULLSCREEN); 

注意在setContentView()之前调用,否则无效。

7.5注册activity

所有用到的Activity都必须在AndroidManifest.xml中注册,否则会报空指针错误。如:

,注意是包名+类名。

八、Adb命令行

8.1DOS进入android-sdk-windows\tools目录

8.2Linux

登录linux命令:adb shell

列出当前文件:ls

删除文件:rm 文件名

8.3Sqlite

登录sqlite命令:sqlite3

8.4Adb命令

列出当前有哪些活动的模拟器:adb devices

上传文件:adb push

安装apk文件:adb install android123.apk

Phone Club——51CTO移动开发线下技术沙龙

活动日期:1月15日
本期主题:Android应用开发技术进阶
地点:北京市海淀区中关村南大街30号东联艺术工社
演讲讲师:范怀宇(网易)

#p#

九、Apk文件破解

9.1获取apk的资源图片

直接用 WinRAR打开,res/drawable直接拖拽出来即可。

9.2获取xml文件信息

虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址

下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,DOS进入该目录,输入:aapt d 91callinfo.apk 91callinfo,这里第四个参数为破解完存放的路径。

9.3反编译dex获取Java源代码

Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址。这个工具不能直接翻译成Java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,如果只是看看源码的话可以用jd-gui,下载地址 。

dex文件(classes.dex)可以用WinRAR从apk文件中解压出来。

十、小技巧

10.1 使用系统的图标

例如调用系统打电话的图标:

  1. <ImageView android:src="@android:drawable/ic_menu_call" 

图标名称和效果(Android1.5和1.6):

http://since2006.com/android/1.5-drawables.php

http://since2006.com/android/1.6-drawables.php

10.2 让控件透明,如ImageButton

设置android:background="@null"

10.3 在layout中直接指定onclick方法

不用手动绑定,在layout中设置

  1. android:onClick=”methodName” 

methodName为对应Activity中的方法,如下格式:(适应1.6以上版本)

  1. public void OnClickMethodName(View view){}  

10.4 用PC键盘控制模拟器

  

PC键盘

模拟器按键

说明

Home

Home

主页

F2

Menu

菜单

ESC

Back

后退

F3

Call

打电话

F4

Hangup

挂断

F5

Search

搜索

Ctrl+F12

 

横竖屏切换

10.5 进入界面就显示/隐藏软键盘

在AndroidManifest.xml中设置activity的

  1. android:windowSoftInputMode="stateHidden" 

10.6 界面可视化布局工具

系统提供可视化布局并不好用,这里推荐一款,布局完后点生成代码即可:

DroidDraw

10.7 在Eclipse中看Android的源码

将源代码拷贝至android-sdk-windows\platforms\android-4\sources下即可。注意源码版本对应android-4文件夹,这里指Android1.6的源码。

十一、疑难解答

Q:11.1 用模拟器调试频繁连不上,或者报emulator-5554 disconnected的错误?

A:Window(窗口) -> Show Views(显示视图) -> device -> view menu(视图菜单)-> Reset adb

Q:11.2 匿名类中如何使用this?

A:classname(类名).this

Q:11.3 程序出错后模拟器上仅显示应用程序遇到问题将关闭怎么办?

A:可以从LogCat中检查错误,默认LogCat在DDMS视图中,可以通过以下方法调整到Java视图与控制台并列显示:点击Eclipse左下角 ,点开后在其他里面找到Android目录下的LogCat拖拽出来即可。

本文作者:农民伯伯

作者博客:http://www.cnblogs.com/over140/

Phone Club——51CTO移动开发线下技术沙龙

活动日期:1月15日
本期主题:Android应用开发技术进阶
地点:北京市海淀区中关村南大街30号东联艺术工社
演讲讲师:范怀宇(网易)
点击报名【编辑推荐】
  1. 在Eclipse下搭建Android开发环境教程 
  2. 在NetBeans上搭建Android SDK环境 
  3. 图文并茂 在MyEclipse 8.6上搭建Android开发环境 
责任编辑:佚名 来源: 博客园
相关推荐

2024-08-20 00:00:08

2011-09-14 09:49:41

Android开发

2011-08-24 17:05:01

Lua

2020-08-16 13:10:46

TensorFlow深度学习数据集

2021-08-05 14:40:45

操作系统UNIXLINUX

2011-01-06 16:00:33

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-03-02 12:43:40

vsFTPd

2011-04-12 10:13:24

2010-11-24 16:15:09

UI设计Windows Pho

2009-06-05 11:01:07

淘宝Open API入门教程

2014-03-12 10:11:57

Python设计模式

2011-06-27 14:56:46

Qt Designer

2019-01-03 10:55:26

2024-05-14 08:49:35

PytestPython测试框架

2011-08-04 18:01:07

IOS Cocoa Touc

2011-08-11 10:50:08

xcode调试文件

2023-11-08 14:27:31

计算机视觉人工智能

2011-08-17 12:03:36

Objective-C
点赞
收藏

51CTO技术栈公众号