http://www.cnblogs.com/over140/archive/2010/09/27/1836567.html

前言

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

声明

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

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

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

正文

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

  参考文章:这里

  1.1JDK

  1.2SDK

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

  1.3Eclipse 3.5 (Galileo)

  下载地址:

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

  1.4ADT 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显示系统管理库,负责把2D3D内容显示到屏幕;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.xmlstrings.xmlarray.xmlstyles.xmldimens.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日期和时间(DatePickerTimePicker)

      AnalogClock

      DigitalClock

      Chronometer(计时器)

      DatePicker

      DatePickerDialog

      TimePicker

      TimePickerDialog

  5.10单项选择(RadioGroupRadioButton)、多项选择(CheckBox)

      CheckBox

      RadioButton

      ToggleButton

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

      GridView

      ListView

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

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

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

      AlertDialog

  AlertDialoghttp://android.yaohuiji.com/archives/655

  ProgressDialoghttp://aina-hk55hk.javaeye.com/blog/679134

  5.13菜单(Menu)

  5.14提示(Toast)

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

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

  5.15GestureOverLayView

      

      文章1、文章2

    5.16HorizontalScrollView

      

    5.17MapView

      

    5.18VideoView

      

    5.19WebView

      

    5.20ZoomControls

      

  六、布局和容器

  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.bz2apktool-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)可以用WinRARapk文件中解压出来。

  十、小技巧

  10.1使用系统的图标

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

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

  图标名称和效果(Android1.51.6)

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

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

  10.2让控件透明,如ImageButton

设置android:background="@null"

  10.3layout中直接指定onclick方法

不用手动绑定,在layout中设置android:onClick=”methodName”methodName为对应Activity中的方法,如下格式:public voidmethodName(View view){}(适应1.6以上版本)

  10.4PC键盘控制模拟器

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界面可视化布局工具

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

DroidDrawhttp://www.droiddraw.org/

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

  十二、后期维护

    12.1  2010-10-1  

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

    12.2  2010-10-18

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

结束

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

更多相关文章

  1. Androidstudio打包jar和arr包
  2. AndroidStudio 升级后遇到的问题
  3. Android中Listview通过适配器设置Item的高度及其他样式
  4. Android(安卓)Debug Tools
  5. 如果我是Android面试官三
  6. Android工程中配置OpenCV
  7. Android(安卓)中Odex文件生成与合并
  8. android 官方文档阅读记录-多屏幕适配
  9. Android评论布局,针对TextView换行和与其他空间对齐的实现

随机推荐

  1. 云服务器1M带宽支持多少人在线,建站够用吗
  2. Ubuntu 安装 GDAL 2.1
  3. MariaDB 半同步复制
  4. 四步教你玩转 MongoDB BI Connector
  5. Kubernetes 日志查询分析实践
  6. 如何快速搭建免费云上 MongoDB 副本集群
  7. 容器服务 kubernetes 系统组件介绍
  8. CentOS环境下如何快速安装软件?
  9. AliOS Things 开发:让你的开发板支持 AliO
  10. 三步解决 Maven 无法下载依赖包的问题