[android基础]《疯狂android讲义》重点整理(1)



一.Android应用的基本组件介绍:


1.Activity是Android应用中负责与用户交互的组件,为Android应用提供了可视化用户界面。
2.Activity只能通过setContentView(View)来显示指定组件。
3.View组件是所有UI控件、容器控件的基类,View组件就是Android应用中用户实实在在看到的部分。
4.View组件需要放到【容器组件】中,或者使用Activity将它显示出来。
5.setContentView()方法可接受一个【View对象】作为参数,也可接受一个布局管理资源的ID作为参数。
6.实际上Activity是Window的容器,Activity包含一个getWindow()方法,该方法返回该Activity所包含的窗口。
  如果应用程序不调用Activity的setContentView()来设置该窗口显示的内容,那么该程序将显示一个空窗口。
7.Activity包含了一个setTheme(int resid)方法来设置其窗口的风格,例如窗口不显示标题、以对话框形式显示窗口,都可通过该方法来实现。


8.Service与Activity的地位是并列的,它也代表一个单独的Android组件,通常位于后台运行。
9.Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。


10.从代码实现角度来看,BroadcastReceiver非常类似于事件编程中的监听器。
   与普通事件监听器不同的是:普通事件监听器监听的事件源是程序中的对象;而BroadcastReceiver监听的事件源是Android应用中的其他组件。
   
11.多个应用程序之间进行实时的数据交换,Android系统为这种跨应用的数据交换提供了一个标准:ContentProvider。
12.当用户实现自己的ContentProvider时,需要实现insert(向ContentProvider插入数据)、delete(删除ContentProvider中指定数据)、update(更新ContentProvider中指定数据)、query(从ContentProvider查询数据)抽象方法。
13.通常与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResolver来访问数据。


14.Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体。
15.Intent封装了当前组件需要启动或触发的目标组件的大量信息。
16.显式Intent:显式Intent明确指定需要启动或者触发的组件的名称。
   隐式Intent:隐式Intent只是指定需要启动或者触发的组件应满足怎样的条件。

17.被调用组件可通过IntentFilter来生命自己所满足的条件。



三.事件处理:



1.两套事件处理机制 :基于回调的事件处理和基于监听器的事件处理。
  【基于监听器的事件处理:
2.事件响应的动作实际上就是一系列程序语句,通常以方法的形式组织起来,这些方法也被称为事件处理器(Event Handler)。
3.当用户按下一个按钮或者单击某个菜单项时,这些动作就会激发一个相应的事件,
         该事件就会触发事件源上注册的事件监听器(特殊的Java对象),事件监听器调用对应的事件处理器(事件监听器里的实例方法)来做出相应的响应。
4.每个组件均可针对特定的事件指定一个事件监听器,每个事件监听器也可监听一个或多个事件源。
5.普通java程序里的方法由程序主动调用的,事件处理中的事件处理器方法是由系统负责调用的。】
  【基于回调的事件处理:
6.当用户在GUI组件上激发某个事件时,组件自己特定的方法将会负责处理该事件。
         事件源和事件监听器是统一的,当事件发生特定事件之后 ,该事件还是由事件源本身负责处理。
7.boolean类型的返回值用于标识该处理方法是否能完全处理该事件:
         如果处理事件的回调方法返回true,标明该处理方法已完全处理该事件,该事件不会传播出去。
如果处理事件的回调方法返回false,标明该处理方法并未完全处理该事件,该事件会传播出去。
8.某组件上所放生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调用法————只要该组件没有完全处理该事件。
9.当该组件上发生某个按键被按下的事件时,Android系统最先触发的应该是该按键上绑定的事件监听器,接着才触发该组件提供的事件回调方法。
10.通过为View提供事件处理的回调方法,可以很好地把事件处理方法封装在该View内部。】


11.Configuration类专门用于描述手机设备上的配置信息,这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。
12.如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法。


13.Android的消息传递机制是另一种形式的“事件处理”,这种机制主要是为了解决Android应用的多线程问题。
14.Handler类的主要作用有两个:在新启动的线程中发送消息;在主线程中获处理消息。
   Handler包含如下方法用于发送、处理消息:

          void handleMessage(Message msg):处理消息的方法。该方法通常用于被重写。
		  final boolean hasMessage(int What):检查消息队列中是否包含what属性为指定值的消息。
		  final boolean hasMessage(int What, Object object):检查消息队列中是否包含what属性为指定值且object属性为指定对象的消息。
		  多个重载的Message obtainMessage():获取消息。
		  sendEmptyMessage(int waht):发送空消息。
		  final boolean sendEmptyMessageDelayed(int what, long delayMillis):指定多少毫秒之后发送空消息。
		  final boolean sendMessage(Message msg):立即发送消息。
          final boolean sendMessageDelayed(Message msg, long delayMillis):指定多少毫秒之后发送消息。
15.TimerTask对象的本质就是启动一条新线程,handleMessage(Message msg)方法位于主线程。



十六、GPS应用开发:



1.GPS定位系统由三部分组成,即由GPS卫星组成的空间部分,若干地面站组成的控制部分和普通用户手中的接收机(硬件支持GPS功能)这三个部分。  
2.Android为支持GPS提供了LocationManager,通过LocationManager类及其他几个辅助类,所有GPS定位相关的服务、对象都将由该类的对象来产生。
3.掌握LocationManager、LocationProvider与LocationListener等API的功能和用法,就可以通过它们来监听、获取android系统中的GPS定位信息。
4.Location:它是一个代表位置信息的抽象类,提供了多种方法获取定位信息。
5.获取GPS定位信息的通用步骤为:
             1.获取系统的LocationManager对象
2.使用LocationManager,通过指定LocationProvider来获取定位信息,定位信息由Location对象来表示。
3.从Location对象中获取定位信息。
6.LocationManager提供了一个addProximityAlert(...)方法,该方法用于添加一个临近警告。



十七、使用Google Map服务:



1、Google提供了大量的在线服务,比如Google Map、Google地球、Google街景、Google天气预报等。
2.把上一章获得的GPS信息与本章的Map应用结合起来,可以非常方便地开发出定位、导航等应用程序。
 
3.调用Google Map的准备:
             1.Android系统默认并不支持调用Google Map,需要获取Map API Key。  
2.Android SDK默认并不支持Google Map API,为了得到支持Google Map的SDK,必须为Android SDK增加相应的插件。
4.为了在Android平台上调用Google Map服务,Google Map插件提供了一个MapView。
5.MapView的getController()方法会返回该MapView所关联的MapController对象,MapController可对该MapView进行控制,比如控制地图定位到指定位置或控制地图放大、缩小等。
6.在Android应用中调用Google Map服务主要依赖于MapView、MapController、GeoPoint这三个API来开发Android的Map应用。
7.根据经度、纬度在Google Map上定位的步骤如下:
             1.获取MapView对应的MapController对象。
2.根据程序获取的经度、纬度值创建GeoPoint对象。
3.调用MapView所关联的MapController对象的animateTo(GeoPoint point)方法定位到指定位置。
4.必须继承MapActivity
8.通过Overlay在Google Map的指定地理位置绘制图片需要如下三步:
             1.获取MapView上屏幕坐标与经纬度坐标之间的投影关系。
             2.调用Projection的toPixels方法把经纬度坐标转换为屏幕坐标。
             3.调用Canvas的drawBitmap方法在屏幕的指定位置绘制图片。
9.把前面介绍的GPS定位与这里的Google Map结合起来,可以非常方便地开发出GPS导航应用。  
10.根据地址定位:结合Android的地址解析服务...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值