本帖最后由 王震阳老师 于 2015-3-23 22:09 编辑
pdf内容回复可见:
1. 什么是AndroidAndroid系统最初由安迪·鲁宾等人开发制作,最初开发。这个系统的目的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。Android于2005年8月被美国科技企业Google收购。 2. Android版本进化史
1.5 Cupcake(纸杯蛋糕) 1.6 Donut(甜甜圈)---首次支持CDMA 2.0 Éclair(松饼)---多账户支持,第二个里程碑(第一个是1.5) 2.1 Eclair(闪电泡芙) 2.2 Froyo(冻酸奶) 2.3 Gingerbread(姜饼)---支持NFC 3.0 Honeycomb(蜂巢) 4.0 Ice cream SandWich(冰激凌三明治)---安卓历史上最重大的一次升级 4.1 Jelly Bean (果冻豆 )---继蜂巢后一次全新的平板策略尝试 4.2 Jelly Bean (果冻豆 ) 5.0 Lime Pie (酸橙派) 3. Android体系结构Android是一个完整的操作系统,包含了中间件和包含了一些关键的应用程序。 Android有四层架构,自上向下依次为: 应用层 应用框架层 函数库 Linux内核
4. [color=rgb(87, 137, 220) !important][url=]JVM和DVM的区别[/url]Google为了解决与Oracle之间关于Java相关专利和授权的纠纷,开发了DVM。 JVM和DVM之间的区别: dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm执行的是.class文件。 dvm是基于寄存器的虚拟机 而jvm执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备。 class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作,提高了类的查找速度 5. ART模式概述ART模式是Android Runtime的简称,从Android 4.2开始出现。在Android 4.2以前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码及时转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象。 ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译。 6. Android开发环境搭建Android开发环境的两种安装方式: JDK+Eclipse+ADT 直接下载集成的开发工具,解压即可用。由于第一中方法受到网络限制等的因素,在线安装不一定能顺利完成,因此黑马程序员提供了事先集合好的一体化开发工作。下载地址: 不管采用哪种安装方式,在安装前都必须先在电脑上安装JDK。 6.1 JDK的安装和Java环境变量的设置 JDK下载地址 JDK(Java Development Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。 JAVA_HOME JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。 PATH PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin。 CLASSPATH 验证JDK是否安装成功 配置完毕后,通过cmd运行以下命令:java -version,javac 如果出现返回信息,则设置成功。
6.2 JDK+Eclipse+ADT的安装方法 下载Eclipse Eclipse为Java及Android开发的IDE。Eclipse不需要安装,把解压包解压后,剪切eclipse文件夹到你想安装的地方,打开时设置你的工作目录即可。 下载Android SDK Android SDK下载地址: Android SDK为Android管理开发包工具,提供了Android各级平台的开发包和工具。注意,因为我们是独立安装,不是一体化(集成系列工具)所以需要单独下载SDK。下载完成后解压到任意路径。 运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。 选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包。公司内网的话需要使用代理来下载。 在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。 [color=rgb(87, 137, 220) !important] “确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行 android –h 如果有类似以下的输出,表明安装成功:
ADT安装 - 确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:
完成之后: - 选择Window > Preferences...
- 在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:\AndroidDevelop\android-sdk-windows - 点击Apply、OK。配置完成。
创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD。 - 1、在Eclipse中。选择Windows > Android SDK and AVD Manager
- 2、点击左侧面板的Virtual Devices,再右侧点击New
- 3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值
- 4、点击Create AVD即可完成创建AVD
注意:如果你点击左侧面板的Virtual Devices,再右侧点击New ,而target下拉列表没有可选项时,这时候: - 然后点击Install Selected按钮,接下来就是按提示做就行了
HelloWorld - 通过File -> New -> Project 菜单,建立新项目"Android Project"
- 然后填写必要的参数,如下图所示:(注意这里我勾选的是Google APIs,你可以选你喜欢的,但你要创建相应的AVD)
- 点击Finish后,点击Eclipse的Run菜单选择Run Configurations…
- 选择“Android Application”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“Android Application”, 有个新的选项“New_configuration”(可以改为我们喜欢的名字)。
- 在右侧Android面板中点击Browse…,选择HelloWorld
- 在Target面板的Automatic中勾选相应的AVD,如果没有可用的AVD的话,你需要点击右下角的Manager…,然后新建相应的AVD。如下图所示:
- 然后点Run按钮即可,运行成功的话会有Android的模拟器界面,如下图所示:
[color=rgb(87, 137, 220) !important]
7. Android项目工具
7.1 Android虚拟机 AVDAVD:Android Virtual Device 安卓虚拟设备 点击Eclipse工具栏手机形状的图标去查看当前的Android模拟器
创建一个AVD的一些注意事项: - Device选项常用的3种屏幕适配
- VGA :640*480 标准的屏幕大小
- HVGA:320*480 一般的VGA
- QVGA :320*240 4分之一的VGA
- 默认情况下,Android会给每个应用的内存堆分配16M
7.2 DDMS DDMS: Device Definition monitor Service 设备信息监听服务 常用的2个选项卡:File Explorer / Emulator Control File Explorer : 文件管理器,即Android系统的文件目录管理 常用的文件夹: data/app : 装三方应用程序用的 data/data : 应用程序包(包名是区分不同应用程序的唯一标志) Emulator Control : 模拟器控制器 常用功能: Speed : 支持的速度,可选3G,2G,全部等 Incoming number : 填写一个号码,可以对模拟器打电话、发短信 Location Controls : 可以填写经纬度,更改模拟器的位置信息 7.3 SDK目录结构目录说明: 1、add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。 2、docs这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。 3、market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。 4、platforms是每个平台的SDK真正的文件,里面会根据APILevel划分的SDK版本,这里就以Android2.2来说,进入后有 一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系 统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则 是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。 5、platform-tools保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。 6、samples是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学 习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主 题开发Home则是androidm5时代的主题设计原理。 7、tools作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏 幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库, 而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是 Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。 8、usb_driver顾名思义,保存着android平台google官方机型的驱动如nexusone、nexuss,同时也有一些老机型驱动的支持,比如说htcdream、htcmagic和motorola的droid。
7.4 Android应用程序目录结构上图中蓝色框住区域是一个完整项目的目录结构。目录结构说明: src/java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
bin 用于存放ADT编译时产生的临时文件, 最终会被打包成一个xxx.apk
res/资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。 res/drawable 专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源 res/layout 专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面 res/values 专门存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中。 strings.xml 定义字符串和数值 arrays.xml 定义数组 colors.xml定义颜色和颜色字串数值 dimens.xml 定义尺寸数据 styles.xml 定义样式。 res/anim/ 存放定义动画的XML文件 res/xml/ 在Activity中使用getResources().getXML()读取该目录下的XML资源文件 res/raw/ 该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里
libs/支持库目录 程序开发时需要的一些三方的jar包可以放在这个目录,系统会自动把里面的jar包,添加到环境变量。 assets资源目录 Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp AndroidManifest.xml项目清单文件 这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。 project.properties项目环境信息,一般是不需要修改此文件 7.5Android调试桥--adb 一:adb是什么?adb有什么用?adb工具如何用?
adb是用来管理模拟器和真机的通用调试工具,该工具功能强大,直接打开cmd即可使用adb命令,adb的全称为Android Debug Bridge,是起到调试桥的作用,通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具,adb的工作方式比较特殊,采用**Socket TCP 5554等端口的方式让IDE和Qemu(模拟处理器)通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行,借助adb工具我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等,其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。 二:ADB的主要功能有哪些? 1:查看当前模拟器或者Android设备实例的状态 一般在使用前都会使用adb devices这个命令查看一下模拟器的状态,通过这个命令得到ADB的回应信息,可以看到ADB作为回应为每个实例制定了相关的信息。 1.1:emulator-5554为实例名称 1.2:device为实例连接状态,device表示此实例正与adb相连接,offline表示此实例没有与adb连接或者无法响应 2:安装和卸载APK应用程序 你可以从电脑上复制一个APK应用到模拟器或者Android设备上,通过adb install <path_to_apk>安装软件,adb uninstall <packageName>卸载软件,如果你不知道这个包名,在AndroidManifest.xml里的找package=""就可以了 2.1: 先把apk文件拷贝到sdk目录下的tools 2.2: 进入dos下切换到SDK的安装路径下的tools目录 2.3 :执行安装命令 adb install <path_to_apk> 发生的错误,因为我连接了真机,而且也打开了模拟器,所以adb给我的回应信息是“比一个多的驱动设备和模拟器”,我最后关闭掉了模拟器在运行安装命令,就提示安装成功了 卸载APK 3:从本机上复制文件到模拟器或者Android设备 adb push <本地路径><远程路径>,<本地路径>指的是自己的机器上或者模拟器上的目标文件,<远程路径>指的是远程设备实例上的目标文件 4:从模拟器复制文件到模拟器或者Android设备 adb pull <远程路径><本地路径>,<本地路径>指的是自己的机器上或者模拟器上的目标文件,<远程路径>指的是远程设备实例上的目标文件 5:使用shell命令 输入adb shell就可以进入shell命令行了,可以使用一些常用的shell命令,如:ls命令列出了文件
8. Android常用布局Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是LinearLayout(线性布局)、RelationLayout(相对布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局)、TabLayout(表格布局)。其中前3种布局用的频率一般是最高的。 绝对布局: 在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端。 表格布局 适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。 TableRow是LinearLayout的子类,TableLayout并不需要明确地声明包含多少行、多少列,而是通过TableRow,以及其他组件来控制表格的行数和列数, TableRow也是容器,因此可以向TableRow里面添加其他组件,没添加一个组件该表格就增加一列。如果想TableLayout里面添加组件,那么该组件就直接占用一行。在表格布局中,列的宽度由该列中最宽的单元格决定,整个表格布局的宽度取决于父容器的宽度(默认是占满父容器本身)。 TableLayout继承了LinearLayout,因此他完全可以支持LinearLayout所支持的全部XML属性,除此之外TableLayout还支持以下属性:
XML属性 | 相关用法 | 说明 | andriod:collapseColumns | setColumnsCollapsed(int ,boolean) | 设置需要隐藏的列的序列号,多个用逗号隔开 | android:shrinkColumns | setShrinkAllColumns(boolean) | 设置被收缩的列的序列号,多个用逗号隔开 | android:stretchColimns | setSretchAllColumnds(boolean) | 设置允许被拉伸的列的序列号,多个用逗号隔开 |
8.1 线性布局线性布局可以分为水平和垂直方向的布局,可以通过android:orientation来定义方向 android:orientation=“horizontal”表示水平方向 android:orientation=“vertical”表示垂直方向 下面通过代码实现一个线性布局。
新建工程,工程名字叫《线性布局》 然后一直执行Next直到Finish即可。项目的目录结构如下图: 编写布局文件activity_main.xml 由于布局文件比较长,因此把该布局文件拆分成了三份。 布局文件第一部分:
布局文件第二部分:
布局文件第三部分:
编写java文件MainActivity.java 该java文件是ADT自动生成的。
MainActivity.java
将该项目运行在模拟器上
运行效果如图 8.2 相对布局相对布局是实际布局中最常用的布局方式之一。相对布局在xml文件中使用<RelativeLayout>来定义。相对布局可以设置某一个视图相对于其他视图的位置,这些位置可以包括上下左右等,因而相较于其他的布局方式而言具有很大的灵活性。 下面通过代码实现一个相对布局。 :创建工程步骤跟线性布局一样,因此直接给出布局文件盒运行效果。 相对布局运行效果图 相对布局布局文件activity_main.xml
布局文件第一部分:
布局文件第二部分:
布局文件第三部分:
8.3 帧布局(也叫框架布局)框架布局是将控件组织在Android程序的用户界面中最简单的布局类型之一。框架布局在xml文件中使用<FrameLayout>来定义。框架布局中的子视图总是被绘制到相对于屏幕的左上角上,所有添加到这个布局中的视图都是以层叠的方式显示,第一个添加到框架布局中的视图显示在最底层,最后一个被放在最顶层,上一层的视图会覆盖下一层的视图,类似于html中的div。 帧布局的运行效果图: 帧布局的布局文件activity_main.xml 布局文件第一部分: 布局文件第二部分:
8.4 Android中的屏幕单位1.px (pixels)(像素):是屏幕的物理像素点,与密度相关,密度大了,单位面积上的px会比较多。通常不推荐使用这个。
2.dip或dp(与密度无关的像素):一个基于density(密度)的抽象单位,这个和设备硬件有关,通常在开发中设置一些view的宽高推荐用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。在运行时, Android根据使用中的屏幕的实际密度, 透明地处理任何所需dip单位的缩放。
3.sp(与刻度无关的像素):同dip/dp相似,会根据用户的字体大小偏好来缩放,主要用于设置字体的大小。 4.dip和px 的区别: 首先明确一点: HVGA屏density=160;QVGA屏density=120; WVGA屏density=240;WQVGA屏density=120 density值表示每英寸有多少个显示点,与分辨率是两个概念。 dip到px的转换公式: px = dip * (density / 160) Android官方定义dip等价于160dpi屏幕下的一个物理像素点, 即1dip=1px。举例来说, 在 240 dpi 的屏幕上, 1dip 等于 1.5px。
不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例:
1.当density=120时屏幕实际分辨率为240px*400px (两个点对应一个分辨率)状态栏和标题栏高为19px或者25dip。
横屏时屏幕宽度为400px或者800dip,工作区域高度211px或者455dip;
竖屏时屏幕宽度为240px或者480dip,工作区域高度381px或者775dip。
2.当density=160时屏幕实际分辨率为320px*533px (3个点对应两个分辨率)状态栏和标题栏高为25px或者25dip。
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者455dip;
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip。
3.当density=240时屏幕实际分辨率为480px*800px (一个点对于一个分辨率)状态栏和标题栏高为38px或者25dip。
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者455dip;
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip。
: 在Android的应用包apk中,系统会根据各个设备的具体情况引用相应的资源文件(注:不加任何标签的资源是各种分辨率情况下共用的): 当屏幕density=240时,使用hdpi标签的资源;
当屏幕density=160时,使用mdpi标签的资源;
当屏幕density=120时,使用ldpi标签的资源。 下面是在manifest中设置app在不同分辨率时,是否支持多密度的方法。 :dip跟px单位换算辅助工具类:
9. Android入门案例9.1 电话拨号器制作一个电话拨打器,输入要拨打的电话号码,点击拨打按钮,可以拨出电话,效果图如下: 创建一个工程,工程名为《电话拨号器》 编写布局文件。这里以线性布局为例 编写Activity 类继承Activity,实现拨打电话功能 在清单文件AndroidManifest.xml中注册该Activity :在创建工程的时候ADT会自动为我们创建一个默认的Activity,MainActivity.java,该Activity已经在清单文件中进行了注册。 在清单文件中给工程添加权限 :一般情况下凡是涉及到用户利益的操作都需要添加权限。这里就必须给应用程序添加android.permission.CALL_PHONE,否则应用程序在打电话的时候会报权限拒绝异常。
不添加权限时异常信息,这应该是开发中避免的。当某个操作我们不知道需要具体什么样的权限时可以通过Logcat的异常信息获取。
双击AndroidManifest.xml清单文件,选择Permission视图,点击Add...
在弹出的权限对话框中,选择Uses Permission选项
找到android:name="android.permission.CALL_PHONE",并保存。 将应用程序部署到模拟器 :第一次运行程序前需要创建虚拟机。创建虚拟机过程如下。 启动AVD Manager 创建一个新的虚拟机 启动一个创建好的虚拟机 至此,虚拟机已经创建完毕,并启动起来。 :虚拟机在没有硬件加速模式下启动可能需要3到5分钟,在硬件加速模式下2分钟以内即可。下面内容将演示如何使用HAXM加速Android虚拟机。 9.2 使用HAXM加速Android虚拟机Android虚拟机在支持Intel VT技术的CPU上,可以使用HAXM(Hardware Accelerated Execution Manager)得到硬件加速支持,使得虚拟机运行速度得到极大提升,速度提升5-10倍。 想要使用HAXM技术,在Android开发环境中进行如下配置: 升级Eclipse Plugin,使用ADT的最新版本。 升级Android SDK Tools到最新版本,支持HAXM的版本是从17开始的。 在Android SDK Manager中下载Intel x86 Atom System Image,你可以只下载你对应API版本的系统就可以了。 在Android SDK Manager中下载Intel Hardware Accelerated Execution Manager Driver,这个是在Extras分类下面,默认是不安装的。 安装Intel HAXM driver。执行完第4步后,你就可以在android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager目录下找到安装程序,例如haxm-windows_r02.exe,安装即可。如果你的CPU不支持VT,会得到提示无法安装。 创建x86 AVD。这步很简单了,创建一个Android虚拟机,关键是CPU要选择Intel x86 Atom,否则速度也提升不起来。
9.3 短信发送器制作一个短信发送器,添加发送人信息和发送信息主体内容后,点击发送按钮,可以发送短息,其效果图如下: :工程的创建和电话拨号器类似,出于篇幅的考虑,这里只给出布局文件和java代码的示例。 编写布局文件
布局文件(全): 编写Activity类,实现业务逻辑 在清单文件中注册Activity 给该应用添加发送短信的权限 :权限的添加在电话拨号器中已经说明,因此不再重复演示步骤。 清单文件如下:
部署在AVM上,运行截图如下
10. Android点击事件的四种写法Android中获取到按钮后,我们一般会为其添加点击事件,而android中的点击事件共有四种。 一、通过匿名内部类来实现 代码摘抄自电话拨号器项目。 二、通过内部类来实现 :其实第二种方法跟第一种方法在本质上没有任何差别,虽然一个是匿名内部类另外一个是内部类,但是这只是写法上的差别,两者都是通过Button对象的setOnClickListener()方法来绑定实现的。 三、由类文件去实现监听接口 让Activity类实现OnClickListener接口 覆写接口中定义的onClick方法
直接使用this为控件注册事件 四、在布局文件中注册事件 在布局文件中添加android:onClick 属性
在相应的java代码中定义call方法 :该方法的形参必须为View对象,且只能有一个。
|