1 Android的发展历史 一、Android系统的发布 Google公司于2007年11月5日宣布与34家手机生产商、运营商以及其他科技公司组成一个开放手机联盟,将共同开发名为“Android”的操作系统。Android系统是一款基于Linux V2.6 内核的综合系统平台,它是一系列组件的集合,主要包含应用程序、Android应用程序框架、系统核心库、Dalvik 虚拟机、 ... 2 Android系统架构 Android系统架构总体可分为四层结构,分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。如下图所示: 图1 Android系统架构图 一、应用程序层 Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用 ... 3 Android系统的初始化流程 Android系统完整的启动过程,从系统层次角度可分为Linux系统层、Android系统服务层、Zygote进程模型三个阶段;从开机到启动Home Launcher完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读Android系统完整的初始化过程。 一、启动BootLoader Android 系统是基于Linux操作系统的,所以它最 ... 4 Activity的架构设计 一、概述 Activity是Android应用程序用户界面的基本组件,它与Service、ContentProvider、Broadcast Receiver被称为Android应用程序的四大核心组件。从应用程序结构层次上来说,每个Android应用是Application类的一个实例,每个Android应用可以包含多个Activity实例。一个Activity实例代表应用程序窗口(Window) ... 5 Activity的生命周期 一、 Activity的生命周期图 一个Android应用程序通常由多个Activity组成,其中有一个“主Activity”是在应用启动时第一个显示的Activity。主Activity可以启动其它的Activity。新启动的Activity又可以再启动其他新的Activity。最新启动的Activity将覆盖之前的Activity,从而形成一个“Activ ... 6 旋转屏幕重新加载Activity 在启动一个acitivity之后,旋转一下屏幕(从竖屏模式切换到横屏模式,或者反过来),尤其是带有侧滑键盘的机型打开滑动键盘时,如果屏幕为竖屏模式,则屏幕会被强制切换到横屏模式。当屏幕显示模式发生变化时,由于横竖屏显示模式存在一些明显的区别,Android系统会认为当前activity显示内容已经不再适合新的屏幕显示 ... 7 ListView与Adapter的关系和简单应用 1. 原理分析: Adapter,顾名思义是适配器的意思,在C++中通过Adapter可以在Vector或者List数据结构中实现队列和栈的结构,即通过Adapter可以在相同的数据结构上(例如Vector)得到不同的具体实现。 而ListView和Adapter的关系也类似,通过不同的Adapter(例如ArrayAdapter,SimpleAdapter等)可以在ListView上得到不同 ... 8 ListView绑定EmptyView 1、原理分析 在《ListView与Adapter的关系中》,我们已经对ListView有了一个初步的认识,并通过简单的代码实现了一个由字符串数组生成的ListView。在这次的讲解中,我们来讨论一种ListView中的特殊情况——ListView为空时显示EmptyView。 我们用ListView是用来显示 ... 9 自定义Adapter实现多种Item视图的ListView 1、原理分析 Adapter对于ListView是非常重要的,它处于listView和数据源的中间,负责为ListView创建具体的视图。之前提到过ListView采用了View复用技术,即使需要显示大量的数据列表时它也能高效的工作,它总是试图复用已经存在的View。 下面就对View复用技术,做简单的讲解 ... 10 ListView的使用技巧 一 原理分析 ListView是Android中非常重要的控件之一,Android对ListView做了特殊的设计与优化,尤其是在显示大量数据时,使用ListView的小技巧,可以得到更好的用户体验,下面就来介绍这些常用的技巧。 1)复用convertView ListView在需要显示Item的时候,会首先检查回收站里是否有缓存的item,如果发现有缓存的item ... 11 Android应用的缓冲界面 缓冲界面具有进入应用时判断网络、获取平台数据、展示logo等功能,因此在android应用中使用缓冲界面已经很普遍。前期时很多android应用的缓冲界面都是静态的,只有一个很漂亮的图片;现在的缓冲界面都是动态的,不只有漂亮的图片还有在移动的小图。个人认为会第二种缓冲界面还是比较好的,既展示了漂亮的UI又给用户 ... 12 宫格视图 宫格界面是android应用中最常见的UI设计之一。宫格界面中常用的当属九宫格,九宫格属于手机开发中比较经典的视图,通常用在首页的导航。Android也不例外,有很多九宫格视图做首页的程序。Android中的九宫格视图是怎么实现的呢,Android中多使用GridView来实现。下面简单的介绍一下GridView。 GridView是 ... 13 二级列表(ExpandableListView) 之前,我们用了很大的篇幅讲解Android中的ListView的实现。主要介绍了ListView和Adapter的关系,ListView绑定EmptyView,使用自定义的Adapter实现ListView的复杂视图,以及使用ListView时的一些技巧。 在次的讲解中,介绍一下Android中二级列表的实现,二级列表的实现在Android中使用的是ExpandableListView类。 ... 14 Tab界面 Tab界面这种UI在很多的移动应用中可以看到,包括android、iphone、window phone7等移动终端上都有这样的应用,Tab这种UI方式具有小视图大容量的特点。 android可以使用TabActivity类或者 TabHost来实现Tab界面,像系统的联系人的界面,这一节也是讲解Tab界面的实现,没有使用系统提供的控件,这里是使用ActivityGro ... 15 抽屉效果(SlidingDrawer) 首先,大家可以看以下抽屉效果在Android应用中的具体例子,从而有一个比较直观的认识。 图1 (收缩时) ... 16 使用ViewFlipper实现左右滑动效果 一、原理分析 ViewFlipper是继承至FrameLayout的,它可以在一个Layout里面可以放置多个View。ViewFlipper控件每次只能显示一个View,如果想要实现左右滑动的效果,还需要在Activity中建立GestureDetector,并实现GestureDetector.OnGestureListener的方法,在OnGestureListener中有六个方法分别处理不同的事件。 ... 17 使用ViewPager实现左右滑动效果 我们之前已经讲解了通过系统提供的ViewFlipper来实现简单的图片滑动的效果。在这部分中,我们来讲解更加复杂的滑动界面是怎么实现的。 在这部分的讲解中,我们使用了Android提供另一个非常有用的控件ViewPager。使用这个控件,需要用到google提到的一个包——android-support-v4.jar,这个包中包含了一些 ... 18 Gallery的实现 大家在购物类的客户端都见过展示商品的UI设计,他们多是使用一些左右滑动的图片加文字的效果。这些是怎么实现的能,其实很简单,android提供这样的控件(Gallery),这里简单介绍一下Gallery控件。 Gallery控件可以简单的理解为横向的ListView,在SDK的api中可以看出Gallery和ListView有很多相似之处,这 ... 19 悬浮框 一、原理分析 工作中遇到一些项目需要把窗体显示在最上层,像来电弹窗显示电话号码等信息或拦截短信信息显示给用户,我们想这些数据放在最上层,activity就满足不了我们的需求了,有些开发者使用了循环显示Toast的方式,toast是不能获得焦点的,这种方法是不可取的。 Android的窗口机制是基于 Window ... 20 扩展系统控件 一、原理分析 在实际的项目开发过程中,需要扩展Android系统控件时,如果Android系统中已经存在对应的控件,就应该扩展功能相近的系统控件,这样既可以减少工作,又可以避免去处理复杂的绘图逻辑。 我们通过扩展Android系统提供的TextView类,得到ItalicBoldTextView类。若想实现文字粗体斜体的效果, ... 21 自绘控件 通过扩展系统控件,可以很容易创建一个功能增强的控件。而当实际需要的功能找不到对应的系统控件时,就只能自己绘制了。当定义自绘控件时需要扩展View类,覆盖onDraw方法来绘制控件。不管是扩展控件类(TextView等)还是扩展View类,都需要覆盖onDraw方法,因为onDraw是控件绘制到屏幕上必须的入口。 这 ... 22 触屏事件处理 一、原理分析 在Android中通常有多种方法处理触屏事件,最常用的方法是通过TouchListener和Event Handler。两种方式的使用时略有不同的,对于使用TouchListener方式,需要扩展OnTouchListener并实现onTouch方法,而对于使用Event Handler方式,需要扩展控件并实现onTouchEvent方法。 使用EventListen ... 23 扩展ViewGroup类 一、原理分析 在Android中除了控件之外还有布局控件或者容器控件,比如LinearLayout、FrameLayout等,它们通常不会实现具体的功能,主要负责布局和管理所包含的子控件。Android系统提供的布局控件都有各自的使用规则,需要根据实际的需要选择合适的布局控件。 如果系统提供的布局控件无法满足实际的布 ... 24 自定义控件属性 一、原理分析 本节讲解内容需要参考上一节的内容,上一节内容链接为:http://www.devdiv.com/thread-126733-1-1.html 。 对于FixedGridLayout布局控件,可以很容易地使用setCellWidth和setCellHeight方法在代码中改变单元格的大小。一般情况在andorid中通常都是使用xml文件来布局UI并设置控件的属性,如 ... 25 定制控件的Style 一、原理分析 在编写布局文件时,基本的工作就是设置控件的属性,通常在同一个应用中会发现需要给很多控件设置同样的属性,比如button的背景,textview的字体样式等等,而且当修改这些属性时,也必须一个接一个地修改。为了解决这样的问题,在android中可以把控件共同的属性提取出来作为style,这样可以复用属性 ... 26 Android中Drawable分类汇总(上) Android把可绘制的对象抽象为Drawable,不同的图形图像资源就代表着不同的drawable类型。Android FrameWork提供了一些具体的Drawable实现,通常在代码中都不会直接接触Drawable的实现类。 在实际的开发过程中,会把使用到的资源都放置在res/drawable目录,剩下的工作交给Android SDK 就行了,当需要使用 ... 27 Android中Drawable分类汇总(下) 七、ScaleDrawable ScaleDrawable是对一个Drawable进行缩放操作,可以根据level属性控制这个drawable的缩放比率,也可以设置它在容器中的对齐方式。 在xml文件中使用scale作为根节点来创建RotateDrawable。 创建ScaleDrawable的代码如下: [mw_shl_code=xml,true] [/mw_shl ... 28 Android中的位图资源简介
Android支持四种类型的位图(Bitmap)分别为ALPHA_8、ARGB_4444、ARGB_8888、RGB_565,常用的类型是ARGB_8888和RGB_565。ARGB_8888类型的位图为32位的位图,它的每一个像素点有32位组成,每8位一组,每组代表的意思分别为Alpha(透明度)、Red(红)、Green(绿)、Blue(蓝);RGB_565类型的位图为16位位图,前7位 ... 29 Android中常用的位图操作
一、View转换为Bitmap 在Android中所有的控件都是View的直接子类或者间接子类,通过它们可以组成丰富的UI界面。在窗口显示的时候Android会把这些控件都加载到内存中,形成一个以ViewRoot为根节点的控件树,然后由根节点开始逐级把控件绘制到屏幕上。 可以通过调用控件的setDrawingCacheEnabled(true ... 30 复用布局文件
Android应用平台提供了非常丰富的UI控件,把这些控件结合使用,能够构建复杂并且功能强大的用户界面。Android中的UI控件通常包括View控件(View的子类)和容器控件(ViewGroup的子类)。View控件能够展现具体的功能,而容器控件能够管理一定的空间区域,负责管理和布局View控件。 容器控件和View控件组合 ... 31 布局的层次结构
在Android应用中,通常都使用xml来布局用户界面,然后使用代码加载xml布局文件生成控件树,然后从根节点开始绘制到屏幕上。当对控件进行操作时,需要在这个控件树中先查找到对应的控件,然后进行处理。对于这个控件树来说,控件树的层次深度会影响到它的加载、绘制以及查找的性能,所以在布局用户界面时,需要选择最 ... 32 布局文件延迟加载
在Android中可以很容易使用标签复用布局,可是当使用标签引入了一些复杂控件时,有些控件在实际的使用过程中,很少会使用它,这样以来会降低页面加载的速度。针对这样的情况,可以使用Android 提供标签进行优化。 标签是一个轻量级的View,它不会占据任何空间,也不参与布局的计算与绘制,只是在控件树中 ... 33 Android中的UI线程
一、原理分析 当应用程序启动时会首先创建一个“主线程”,它是应用程序的入口,负责管理UI、分发事件,所以习惯上也被称作UI线程。UI线程也负责处理与用户交互的操作,当用户触摸了手机屏幕时,UI线程会把触摸事件分发到控件,控件收到事件后会改变自己的状态,同时发送一个请求重新绘制的事件插入到事件队列。 ... 34 Android中的消息模型
Android系统也属于消息驱动类型的系统,与大家所熟悉的Windows系统类似。Android 实现了自己的消息系统,并且抽象出Looper、MessageQueue、 Message 、Handler等一些组件概念,把这些组件巧妙地结合在一起形成了Android的消息模型。为了能够深刻地理解Android的消息模型,首先需要了解消息系统的基本原理和构造。 ... 35 Handler常见用法
Handler是Android消息模型最重要的一个概念,它可以说是Android消息模型的核心,对于Looper、MessageQueue、Message 等概念一般在应用中很少使用。在Android系统框架中也频繁地使用Handler,而且为了更方便地使用Handler,还把Handler进行了一些列的封装,下面就通过列举一些Handler的使用方法。 1)Acitivity的 ... 36 Android中的AppWidget
一、AppWidget简介 Widget是一种小应用程序。在Android1.5后加入了AppWidget 框架之后,开发者可以使用该框架开发Widget。AppWidget可以拖到用户的桌面进行交互,它可以在桌面指定一个空间来显示应用提供的自定义内容。 当Widget被拖到桌面上,他们被指定一个保留的空间来显示应用提供的自定义内容。 ... 37 AppWidgetProvider类的使用 一、接收App Widget广播意图 AppWidgetProvider 只是一个便捷类。如果你想要直接接收Widget 的广播, 你可以实现你自己的 BroadcastReceiver 或者重载onReceive(Context, Intent) 回调方法。下面简要介绍几个常用的Intents: ACTION_APPWIDGET_UPDATE:当一个Widget被加入到桌面时,更新时间到了或是 ... 38 AppWidget开发实例
在下面的例子中,笔者新建一个AppWidget,通过在桌面点击AppWidget中的“Send”按钮,然后通过刷新TextView来验证AppWidget。 代码结构如下图所示: 图11-4 AppWidgetTest代码结构图 一、创建工程 首先,新建Android 工程“com.devdiv.test.appwidgettest”。在res文件夹下新建一个 ... 39 AppWidget的补充资料 本节作为桌面组件AppWidget章节的补充资料,是本人在学习AppWidget的使用时发现的一份还不错的参考资料。 清华大学出版社的《Android应用程序开发(第2版)》的第十章——Widget组件开发。书中的内容是基于Android4.0平台的,本人在Android2.1平台上,重新编写了Demo,有些地方稍微有些调整,但功能实现 ... 40 使用HttpURLConnection发送Post/Get请求 HTTP规范定义中最常用的请求类型就是Get和Post。当你在浏览器里输入任意一个网址按回车,浏览器即已经在执行Get请求了;当你回复了某条微博时,这时可能就执行了一次Post请求。简单的来说,Get就是向服务器发送索取数据的一种请求,不会影响资源的状态;Post是向服务器提交数据的一种请求,可能创建或更新服务器上的 ... 41 设置Proxy访问网络 Android应用程序访问互联网资源时,在Wifi的情况下处理网络连接按照上文所讲述的方法步骤即可顺利实现;但如果当前Android设备的联网方式是通过移动运营商的网络服务为中转,间接访问的互联网资源时,则就涉及到在创建HTTP链接之前需要设置Proxy,即可尽量避免网络中断访问的情况,顺利访问互联网。 Pro ... 42 文件下载断点续传的实现 文件下载断点续传的意思是在文件下载中途可以多次暂停下载,然后又可以从刚才暂停的位置继续读取数据完成下载任务,并且最终下载下来的文件是与服务器上的资源是完整一致的,不会受损。由此可以确定,实现此功能需要掌握如下功能点: 1、开启网络链接,下载数据,并且在下载过程中可以随时中断。 ... 43 Android网络通信补充资料 本节主要讲解使用Socket进行通信,本人觉得可以作为本章不错的补充资料。 参考《疯狂Android讲义》第十三章——Android的网络通信第一节的内容。 书中进行了比较详细的讲解,这里只把Demo提供给大家。可以去网上下载《疯狂Android讲义》PDF版本查看相关内容。 主要分为两个部分: ... 44 Android系统服务介绍 通常在我们的Android手机中,有很多的内置软件来完成系统的基本功能,例如,当手机接到来电时,会显示对方的电话号;也可以根据周围的环境将手机设置成震动或静音;还可以获得当前所有的位置信息等等。那怎样才能把这些功能加到我们的手机应用中呢?答案就是\"系统服务\"。在Android系统中提供了很多这种服务,通过这 ... 45 Android电源服务开发 一、PowerManager类简介 PowerManager的作用在于对电源进行管理。PowerManager相关的接口和设备电池的续航能力有很大的关联。除非一定要使用,否则尽可能最小限度的使用这个类,并且在使用完成时一定要记得释放。 开发者可以通过调用Context.getSystemService(Context.POWER_SERVICE)获取PowerManage ... 46 Android窗口管理服务开发
一、WindowManager类简介 该接口用于与窗口管理器交互。通过 Context.getSystemService (Context.WINDOW_SERVICE)可以获取到WindowManager的实例。 该类中有两个公有的方法:getDefaultDisplay()和removeViewImmediate方法。其中, “public abstract Display getDefaultDisplay ()”,用 ... 47 Android中Layout扩展服务开发
一、LayoutInflater类简介 该类用于把一个Layout XML文件实例化成它所对应的View对象。它不能被直接使用,必须用getLayoutInflater()方法或getSystemService(String)方法来获得一个已经绑定于当前Context的LayoutInflater实例。 如果你想为你自己的View创建另一个LayoutInflater,可以使用LayoutInfl ... 48 Android中Activity服务开发 一、ActivityManager类简介 该类用于和系统中所有正在运行的进程交互。运行这个类,可以实现许多系统级别的Activity管理和监控功能,比如:查看所有正在运行的服务、查看正在运行的进程、查看正在运行的任务、查看各个Activity内存使用等等。 ActivityManager类包含六个辅助的内部类,他们分别是: ... 49 Android中Notification服务开发
一、NotificationManager类简介 状态栏(status bar)通知将一个图标填加到系统的状态栏中(包含一条可选的提示文本信息),并将一条展开信息添加到通知窗口中。当用户选中展开信息时,Android将执行一个此通知已定义的意图Intent(通常用于弹出一个Activity)。你还可以对通知进行配置,用设备提供的声音、振动 ... 50 Android中闹钟服务开发 一、AlarmManager类简介 这个类提供了访问系统闹钟服务。通过使用闹钟服务可以让您设定您的应用程序在未来的某一点开始运行。当一个闹钟时时间到达时,已经为闹钟注册的意图将被系统广播出去,然后自动启动目标应用程序。当设备是休眠时,注册的闹钟将被保留(也可以选择唤醒设备,如果他们在这段时间里关闭), ... 51 Android中位置服务开发
一、LocationManager类简介 Android中LocationManager的提供了获取系统地理位置服务,这些服务允许应用程序定期获取设备地理位置更新信息,或者查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。 以下是 ... 52 Android中Vibraror服务开发 一、Vibrator类简介 Vibrator是Android提供的震动类,用于控制震动设备,new Vibrator()这个构造方法已经去除,调用时必需获取震动服务的实例句柄。 注意:如果应用程序的进程退出了,那么其开启的震动也将停止。 参考Android官方文档中Vibrator的OverView部分: Class Overv ... 53 Android中KeyGuard服务开发 这个类是用于对手机键盘的加锁和解锁。就应用而言,该类使用比较简单,笔者直接给出一个完整的工程示例,下面代码提供了个键盘管理类ManageKeyguard,在该类中实现了对KeyguardManager对象的初始化,提供了加锁、解锁的接口,并提供了使用完成后安全释放资源的接口函数: [mw_shl_code=java,true]package com.te ... 54 Android多媒体系统简介
Android系统能够录制、播放各种不同形式的本地和流式多媒体文件。Android的多媒体系统为Android设备多媒体的开发和应用提供了非常好的平台。 一、Android多媒体系统架构 Android的多媒体框架涉及到应用层、JAVA框架、C语言Native框架、硬件抽象层(驱动层)等环节。下面是Android的多媒体系统框架层次 ... 55 MediaPlayer的使用 OpenCore为Android用户提供了强大的多媒体开发运用功能,为了简化音频、视频系统的开发和播放,Android提供了一个综合的的MediaPlayer以简化对多媒体的操作。 Android提供了MediaPlayer类来完成对多媒体的播放。通过MediaPlayer类我们可以播放应用程序实现对应用程序资源文件、本地文件、内容提供器或者 ... 56 Android中音频视频录制
Android提供了两种可选的方法用于在应用程序中录制音频和视频。 1、最简单的方法是使用Intent启动视频录制应用程序。该选项可以使我们指定输出位置和视频录制质量。 2、第二种方法则是使用MediaRecorder类来实现对音频、视频的录制。 一、使用意图录制音频视频 录制音频和视频最 ... 57 SoundPool类的使用 一、SoundPool类简介与适用场合 1)SoundPool简介 SoundPool类是Android用于管理和播放应用程序的音频资源的类。一个SoundPool对象可以看作是一个可以从APK中导入资源或者从文件系统中载入文件的样本集合。它利用MediaPlayer服务为音频解码为一个原始16位PCM流。这个特性使得应用程序可以进行流压缩, ... 58 异步加载与缓存的重要性 对于编写C/S(客户端/服务端)模式的Andorid应用程序来说,通常需要从服务端获取图片及其他数据信息,为了避免系统抛出应用程序无响应异常,切记不能在主线程中加载网络图片资源。通用的做法是开启一个新的线程进行网络操作,在获取网络图片之后,通过Handler机制把图片和UI控件进行关联。 在加载网络图 ... 59 垃圾回收机制与引用类型
Java语言的一个重要特性是引入了自动的内存管理机制,这样一来,开发人员就不需要自己来管理应用中的内存了。C/C++开发人员需要通过malloc/free和new/delete等函数来显式的分配和释放内存。这对开发人员提出了比较高的要求,因为这些方法使用不当很容易造成内存访问错误和内存泄露等严重问题。一个最常见的问题是 “ ... 60 使用软引用构建缓存
一、为什么要使用软引用 在上面关于软引用的介绍中,已经提到了软引用的特性。使用SoftReference引用的对象会有很长的生命周期,只有当系统的内存不足的时候,才会去释放这些软引用对象。所以可以使用软引用来缓存一些比较昂贵的资源,比如获取的网络图片数据。 当应用从网络中获取网络图片数据时,用 ... 61 移动应用广告平台发展现状
移动广告平台和互联网的广告联盟相似。在PC互联网时代,GOOGLE通过ADSENSE广告平台将众多投放的广告,分发到放置了ADSENSE广告的中小网站上成就了霸业。 提起移动广告或者无线广告,大家的第一反应一定是各种各样的“垃圾短信”轰炸,或者是WAP网站上的小广告条。不过,随着智能手机的日渐普及,情况正在 ... 62 移动广告平台发展趋势 由全球知名的移动互联网第三方数据研究机构艾媒咨询集团(IIMEDIA Research Group)与腾讯应用中心联合主办的“2011中国首届移动广告营销大会”在广州隆重召开,这一场别出心裁、令业界期盼已久移动营销盛会终于掀开了神秘的面纱。 随着移动互联网的发展日趋成熟,移动广告在智能终端得到完美的展示,大 ... 63 移动广告平台的盈利模式 随着iPhone手机和Android手机的流行,移动互联网也发展起来了,开发者也开始尝试各种盈利模式。在应用中嵌入广告,是现阶段一个重要的盈利模式。移动广告模式和传统的PC互联网广告基本相同,所以很多概念都是通用的,目前常见的盈利模式有:CPM、CPC、CPA、CPS、CPL 、CTR、eCPM。 1)CPM(Cost Per Mil ... 64 选择广告平台 自从全球最大的移动广告平台Admob被Google以7.5亿美金收购以来,国内一大批的移动广告平台就有如雨后春笋般出现了。随着Android和iPhone等平台的兴起,国内最早做移动广告平台的万普世纪、亿动广告和架势无线等公司均相继宣布全面进军智能应用市场。 一、国内移动广告平台简介 目前,国内仅针对Andro ... 65 嵌入式广告插件
移动广告平台服务商提供了各自的SDK开发包,开发者只要把相关的库文件导入到工程中,进行一些简单的设置就可以把广告添加到应用中。下面通过“有米广告平台”的使用,来说明如何在自己应用中加入广告模块. 第一步、注册开发者账号 开发者首先需要注册广告平台账号,通过账号可以登录到移动广告平台, ...
posted @
2013-04-19 13:48
javawebsoa
Views(
242 )
Comments()
Edit
收藏
举报