一、 环境配置和安装(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

  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)

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

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

  5.9     日期和时间(DatePicker、TimePicker)

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

  5.11 表格 (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: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();

  六、布局和容器

  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中注册,否则会报空指针错误。如: ,注意是包名+类名。

  八、 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   使用系统的图标

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

  图标名称和效果(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键盘控制模拟器

  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拖拽出来即可。

  结束:资料均来自网络,感谢这些人的分享。

  参考文章:这里

更多相关文章

  1. 【Android】向sdcard中写入文件
  2. Android(安卓)下载网络url文件并显示进度
  3. Android创建快捷方式(shortcut)
  4. android studio的安装信息
  5. 在Android中使用NDK调用OpenGl
  6. Android_开发 Android中CookieManager的底层实现
  7. Android创建快捷方式(shortcut)
  8. Android(安卓)Studio 多渠道打包遇到的问题总结
  9. NPM 和webpack 的基础使用

随机推荐

  1. 一个简单android的全选,单选demo
  2. Android studio下载与安装
  3. 在Android Service中弹出系统全屏对话框
  4. android 手机拍照流程
  5. ok6410 android driver(12)
  6. Android Home键监听
  7. Android(java)学习笔记133:ListViewProject
  8. 三种方法使android 手机执行 二进制程序
  9. Android学习实践:1.初次创建Android项目遇
  10. Writing an Android Sync Provider: Part