前言

  这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助  :)

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://www.cnblogs.com/over140/

正文

  一、             环境配置和安装(Android2.2

  参考文章:这里

  1.1     JDK

  1.2     SDK

  下载地址:http://dl.google.com/android/android-sdk_r06-windows.zip

  1.3     Eclipse 3.5 (Galileo)

  下载地址:

  http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-java-galileo-win32.zip

  1.4     ADT 0.9.7

  下载地址:http://dl.google.com/android/ADT-0.9.7.zip

  1.5     安装

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

      

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

  二、             Android系统架构

  

    2.1   Linux内核(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 语言编写的。

  三、             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()读取。

  参见http://www.inandroid.cn/bbs/thread-1401-1-1.html 。

  五、             基本控件

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

  自动完成的效果和代码:http://android.yaohuiji.com/archives/390

      AutoCompleteTextView :

  5.2     编辑框(EditText)

      

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

  5.3     下拉列表(Spinner)

      

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

  5.4     进度条(ProgressBar)

      

    效果和代码:http://www.eoeandroid.com/viewthread.php?tid=1081

  5.5     拖动条(SeekBar)

      

  5.6     评分条(RatingBar)

      

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

      Button:

      ImageButton:

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

  ImageView

      Gallery

      画廊效果:http://android.yaohuiji.com/archives/565

  5.9     日期和时间(DatePicker、TimePicker)

      AnalogClock

      DigitalClock

      Chronometer(计时器)

      DatePicker

      DatePickerDialog

      TimePicker

      TimePickerDialog

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

      CheckBox

      RadioButton

      ToggleButton

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

      GridView

      ListView

  GridView:http://blog.csdn.net/hellogv/archive/2009/09/18/4567095.aspx

  ListView:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html

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

      AlertDialog

  AlertDialog:http://android.yaohuiji.com/archives/655

  ProgressDialog:http://aina-hk55hk.javaeye.com/blog/679134

  5.13 菜单(Menu)

  5.14 提示(Toast)

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

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

  5.15 GestureOverLayView

      

      文章1文章2

    5.16 HorizontalScrollView

      

    5.17 MapView

      

    5.18 VideoView

      

    5.19 WebView

      

    5.20 ZoomControls

      

  六、             布局和容器

  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)中,注意不会显示边框线也不能够跨行合并单元格。

  例子:http://hi.baidu.com/hoyah/blog/item/d9db34275d6f361a8b82a171.html

  6.6   选项卡(TabWidget)

  

  例子:http://fatkun.com/2010/06/android-tabwidget.html

  七、             常用代码

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

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

  7.2   从当前ContentView从查找控件

    (Button)findViewById(R.id.btnAbout)

    R.id.btnAbout指控件id。

  7.3   获取屏幕宽高

    DisplayMetrics dm = new DisplayMetrics();

    //获取窗口属性

    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int screenWidth = dm.widthPixels;//320

    int screenHeight = dm.heightPixels;//480

  7.4   无标题栏、全屏

    //无标题栏

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    //全屏模式

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   

      WindowManager.LayoutParams.FLAG_FULLSCREEN);

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

  7.5   注册activity

所有用到的Activity都必须在AndroidManifest.xml中注册,否则会报空指针错误。如:<activity android:name="com.common.TestView"> ,注意是包名+类名。

  八、             Adb命令行

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

  8.2   Linux

  登录linux命令:adb shell

  列出当前文件:ls

  删除文件:rm 文件名

  8.3   Sqlite

  登录sqlite命令:sqlite3

  8.4   Adb命令

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

  上传文件:adb push

  安装apk文件:adb install android123.apk

  九、             Apk文件破解

  9.1   获取apk的资源图片

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

  9.2   获取xml文件信息

虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址:https://code.google.com/p/android-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,下载地址:http://code.google.com/p/dex2jar/。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,如果只是看看源码的话可以用jd-gui,下载地址:

http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 。

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

  十、             小技巧

  10.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中设置android:onClick=”methodName”,methodName为对应Activity中的方法,如下格式:public void methodName(View view){} (适应1.6以上版本)

  10.4          用PC键盘控制模拟器

PC键盘

模拟器按键

说明

Home

Home

主页

F2

Menu

菜单

Esc

Back

后退

F3

Call

打电话

F4

Hangup

挂断

F5

Search

搜索

Ctrl+F12

横竖屏切换

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

在AndroidManifest.xml中设置activity的

android:windowSoftInputMode="stateHidden"

  10.6          界面可视化布局工具

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

DroidDraw:http://www.droiddraw.org/

  10.7          在Eclipse中看Android的源码

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

  十一、      Q & A

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

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

-> Reset adb

  11.2          匿名类中如何使用this?

classname(类名).this

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

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

  十二、后期维护

    12.1  2010-10-1  

      补充了许多控件的截图,导出PDF下载: http://download.csdn.net/source/2729442

    12.2  2010-10-18

      补充了GestureOverLayView的文章链接,文章1是英语的,文章2为中文的。

结束

  资料均来自网络,感谢这些人的分享~~

Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)的更多相关文章

  1. Hello, Android 快速入门

    Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...

  2. Realm for Android快速入门教程

    介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...

  3. Xamarin.Android快速入门

    一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹-> ...

  4. android快速入门

    1.安装环境(jre  java 运行环境,jdk java 开发工具包) 2.android studio 一.快捷键的使用 1. To open any class in the editor q ...

  5. Maven快速入门(三)Maven的坐标和仓库

    之前通过一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,然后讲maven如何编译运行项目.接下来介绍maven中几个比较重要的概念:坐标和仓库.Maven快速 ...

  6. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  7. Android开发快速入门(环境配置、Android Studio安装)

    Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...

  8. Android压力测试快速入门教程(图解)——Monkey工具

    文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...

  9. Android2.2快速入门 zz

    http://www.cnblogs.com/over140/archive/2010/09/27/1836567.html 前言 这是前段时间用于公司Android入门培训的资料,学习Android ...

随机推荐

  1. iOS--开发从入门到精通

    前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...

  2. 【转】实现虚拟机VMware上linux与windows互相复制与粘贴

    1.点击虚拟机-->安装vm tool 2.完成后在系统桌面会出现一个tar文件,解压到tmp目录 下 3.终端cd到该文件夹下,执行./vmware-install.pl 一路回车到底.4.重 ...

  3. java学习5-jar包的下载以及导入

    1.出现未导入包的情况 ,表示当前jdk不 2.百度下载jar包 3.File. 未完待续http://blog.csdn.net/a153375250/article/details/5085104 ...

  4. React Native工程中TSLint静态检查工具的探索之路

    建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查代码, ...

  5. POJ P1185 炮兵阵地 【状压dp】

    炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29502 Accepted: 11424 Description 司令 ...

  6. NOI2014魔法森林题解报告

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,-,n,边标号为 1,2,3,-, ...

  7. 【Python3的进制扫盲】

    一.进制 1.进制简介 进制就是进位制,是人们规定的一种进位方法.计算机底层的数据运算和存储都是二进制数据.计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别. 2.常用进制 对 ...

  8. 框架----Web框架本质

    一.Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...

  9. PID控制算法的C语言实现八 变积分的PID控制算法C语言实现

    变积分PID可以看成是积分分离的PID算法的更一般的形式.在普通的PID控制算法中,由于积分系数ki是常数,所以在整个控制过程中,积分增量是不变的.但是,系统对于积分项的要求是,系统偏差大时,积分作用 ...

  10. jsp 文件无法加载 css、js 的问题

    今天遇到一个问题是,在 jsp 里面引入 css.js,请求的状态是 200,但 css.js 的内容却是空的. 这是因为 servlet 有个 url-pattern,将 css.js 的路径当做 ...