一、Android简介:

由Andy Rubin开发,

  常用手机版本:谷哥:Nexus、华为:EMUI、魅族:Flyme

  Adnroid是运行在Java虚拟机(JVM)上大部分免费的开源的、应用通过权限控制很容易获取用户敏感信息。

二、Android系统框架:

SDk编程基础-LMLPHP

Android虚拟机dalvik与JVM区别(版权问题开发的dalvik):

Dalvik

Jvm

识别的是dex文件

识别的是class jar包(多个class的压缩包)

架构是基于寄存器

架构是基于栈

Android ART模式(自4.4后出现):安装应用时把dex文件转换成机器码存在本地

三、开发环境:

SDK文件目录

SDk编程基础-LMLPHP

进入adb shell

SDk编程基础-LMLPHP

Android Studio两种apk模式:

  • 1。Debug(默认有签名:debug.keystore)
  • 2。Release

四、SDK基础:

1。视图控件(View):使用xml布局文件定义界面。绝大部分UI组件都放在android.widget包及其子包。

资源文件概览

  2。布局介绍:

   1。线形布局LinearLayout

  2。相对布局RelativeLayout

   3。帧布局FrameLayout

     4。表格布局TableLayout

    5。网格布局GridLayout

    6。绝对布局AbsoluteLayout

  3。Textview和EditText

  TextView:继承于View是EditText和Button两个组件父类,只能显示文本信息

  EditText:允许用户文本编辑

  4。ImageView:显示图片

  5。Button和ImageButton

Button

ImageButton

按钮点击事件

有text属性

有src属性

可以设置文本

可以设置图片

  6。RadioButton单选框

     SDk编程基础-LMLPHP

    SDk编程基础-LMLPHP

  7。Spinner

    1。静态方式

    在values文件夹下生成数组数据

      SDk编程基础-LMLPHP

      在layout文件下的main.xml文件中

    SDk编程基础-LMLPHP效果SDk编程基础-LMLPHP

    2。动态方式,使用配适器添加数据

  8。AutoCompleteTextView

  9。Toast:短暂消息提示,不打断用户操作

  特点:无法被操作,显示后会自动消失,无需用户操作

      大部分只显示文本字符串,只用两种属性

  Toast.LENGTH_SHORT  2秒

    Toast.LENGTH_LONG   3.5秒

   自定义Toast步骤:

   1。通过构造函数建立Toast实例

    2。调用setView,指示Toast显示内容

  3。调用setGravity,设定显示位置

   4。调用setDuration,设定显示时间

  5。调用show()显示

  10。Dialog对话框:

a.提供原界面没有空间呈现的内容     eg:音量设置

b.提示进一步确认信息

常用对话框:

      ProgressDialog:进度对话框

DatePickerDialog:日期选择对话框

TimePickerDialog:时间选择对话框

      AlertDialog:风格与界面一致,三部分组成:标题、内容、按钮。使用Builder类构建

        三个组成部分:

            1。标题(setTitle()方法)

            2。内容(setMessage()方法)

            3。按钮(setButton()方法

                setPositiveButton()方法

                setNegativeButton()方法等)

     使用Builder类构建最简单,提供了一系列的方法配置AlertDialog

    SDk编程基础-LMLPHP

    在调用builder调用show()方法前,仍然可对Dialog做其他设置

        1。Dialog主体是List回调接口

    SDk编程基础-LMLPHP

     2。Dialog主体是CheckBox回调接口

SDk编程基础-LMLPHP

   3。Dialog主体是RadioButton回调接口

       SDk编程基础-LMLPHP

     4。完全自定义Dialog内容

      SDk编程基础-LMLPHP

  11。复杂控件:

ListView:最广泛的数据显示控件

常用属性

属性名

说明

divider

设置分割线的颜色

dividerHeight

设置分割线的高度

Scrollbars

设置滚动条的隐藏或显示

Fadescrollbars

设置滚动条的自动隐藏或显示

Entries

引用一个将使用ListView的数组。

若静态数组,使用此属性比在程序中写入更为简单

ListView的使用:

第一种:一般

1。在布局文件中编写代码(添加标签)

2。Activity中

a。获取ListView对象

b。准备数据源

c。配置配适器

d。将配适器关联到ListView中

第二种:使用ArrayAdapter实现文字列表

1。布局文件编写代码

2。Xml文件中添加ListView标签

3。Activity中编写代码

a。获取ListView对象

b。准备数据源(Array数组)

c。配置配适器

d。将配适器关联到ListView中

    配适器(Adapter):一个接口,派生了ListAdapter(提供列表)和SpinnerAdapter(提供列表选项)两个字接口

    配适器是数据和视图的桥梁,负责把数据所提供的内容显示到视图所定义的外观。

    1。配适器种类

属性名

说明

ArrayAdapter

适用于简单的文字列表

SimpleAdapter

适用于简单的图文混搭列表

SimpleCursorAdapter

适用于数据源是数据库的列表

自定义Adapter(继承BaseAdapter)

适用于绝大多数情况

  12。Activity之间的数据传递:意图

        意图Intent:Android三个重要组件Activity、Service、Broadcast Receiver(广播),都依靠Intent启动和数据交换。

      Intent分两类:

        1。显示意图:明确指出组件名称的Intent,可以调用setComponent或setClass指定

      源码:

SDk编程基础-LMLPHP

      Eg:启动第二个页面

      SDk编程基础-LMLPHP

        2。隐式意图:没有明确的组件名称,必须包含足够的属性信息,需要在清单文件activity中添加<intent-filter>标签并且在内添加Action,Data,Category。由Android系统帮助寻找Intent请求相匹配的组件

      清单文件中,在<application     </activity>之间,配置隐式Intent

       SDk编程基础-LMLPHP

Action字符串

描述

ACTION_MAIN

主程序入口,不会接收数据,结束后不返回数据

ACTION_EDIT

打开编辑Data里指定数据相对应的应用程序

ACTION_CALL

拨打Data里面指定的电话号码

ACTION_DIAL

启动系统拨号程序或其他拨号程序,显示Data里号码

Data数据属性:描述Intent要操作的数据URI和数据类型

Extra额外属性:使用Intent连接不同的组件时,附加额外信息,传递数据

Category类别:对被请求组件的额外描述信息。

Intent类中的常量字符串

Category字符串

描述

CATEGORY_BROWSABLE

目标Activity能够在浏览器中点击链接激活

CATEGORY_HOME

手机开机后显示Activity,或按下Home键显示界面

CATEGORY_LAUNCHER

应用程序最先被执行的Activity

CATEGORY_PREFERENCE

偏好设置的Activity

        SDk编程基础-LMLPHP

        注意:一条<intent-filter>元素至少包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配

      Intent的数据传输:

      Activity之间的数据传递步骤

    显示:

       1。创建新的Activity

          2。启动Activity

         3。启动之前传递数据,启动时接收数据

         4。将数据封装到Intent对象中传递

         5。将数据封装到Bundle对象中传递

隐式:通过设置<action>标签

1。匹配<intent-filter>中的Action

2。接收隐式intent必须要在intent过滤器中包含  “android.intent.category.DEFAULT"

3。用Uri来做data

4。附加信息extras

        Intent数据返回

   onSaveInstanceState()确保活动被销毁前调用,保存关键数据

1。以startActivityForResult()方式启动

2。在新界面使用setResult()返回

3。上一个活动中重写onActivityResult()

    Activity四大组件:

      Activity生命周期:

        1。返回栈:Android活动可以叠加,新的Activity可以覆盖原活动,返回销毁最上面的Activity,下面的Activity重新活动。

          SDk编程基础-LMLPHP

      Activity四种活动状态:

         运行状态:Activity在返回栈顶,系统不会回收活动

        暂停状态:Activity不在栈顶,但可见

           停止状态:Activity不在栈顶,不可见,系统会保存相关状态,但需要内存时,会进行回收

          销毁状态:Activity离开返回栈,系统优先回收

      Activity生命周期:

           SDk编程基础-LMLPHP

        Activity四种启动模式:android:launchMode=" "

          SDk编程基础-LMLPHP

          1。standared模式(默认):

        每当启动一个新的活动,就在返回栈中入栈,并处于栈顶,不检查栈顶。

         2。singleTop模式(解决栈顶重复问题)

            启动前检测栈顶,如果存在该活动,直接使用,如果不为于栈顶,仍然创建新的活动对象

        3。singleTask模式

        启动前检测整个返回栈,存在直接使用并将该活动之上的所有活动出栈。

       4。singleInstance模式(实现其他程序共享这个活动的实例)

          创建一个新栈来管理活动

       Activity响应事件机制:每个View都有自己的回调方法,常用的回调方法:onKeyDown、onKeyUp、onTouchEvent、onTrackballEvent、onFocusChanged

         1。基于回调机制

            2。基于监听机制

     广播:

      广播接收者BroadcastReceiver:类似windows的消息钩子,全局监视器,实现组件间通信。

      全局广播:广播可以被任何应用程序收到

    广播类型:

            有序广播(类似串联):通过sendOrderedBroadcast()发送广播,adortBroadcast()截断广播

    无序广播(类似并联)标准广播:完全异步执行,通过sendBroadcast()发送

   本地广播:只能在本应用程序接收,只能代码注册不能静态注册

    使用方式:

        LocalBroadcastManager管理广播

               LocalBroadcastManager.getInstance()获得实例

                 xx.registerReceiver()注册广播

             xx.sendBroadcast()发送广播

           xx.unregisterReceiver()取消注册

      广播的注册

         静态注册

      SDk编程基础-LMLPHP

         动态注册

      SDk编程基础-LMLPHP

     服务:

特点:1。后台运行

2。没有界面

3。无法自己启动

4。单例模式

生命周期

       SDk编程基础-LMLPHP一个service的onStartCommand可能重复调用多次

两种启动方式:

1。startService:启动的服务所在的进程属于服务进程,Activity一旦启动服务,就与Activity无关

2。binService:启动的服务所在的进程不属于服务进程,Activity与服务建立连接,Activity退出服务也退出

Android网络接口

使用的网络协议:HTTP,HTTPS,TCP/IP,SOCKET

网络接口:

Java.net

Org.apache接口

Android.net

两种网络架构:

B/S模式:浏览器/服务端,应用层HTTP协议通讯,不需要特定客户端软件

C/S模式:客户端/服务器,任意网络协议,特定客户端

服务端返回内容的方式:

HTML代码形式返回

XML字符串形式返回

Json对象方式返回

   Android多线程:主线程不能进行耗时操作否则会报异常。anr 阻塞异常

      耗时操作使用子线程操作。只有主线程才可以更新UI。

      runOnUiThread()方法在主线程或子线程都可以更新UI

    handler原理:

    SDk编程基础-LMLPHP

      handler:用来发送消息和处理消息

    Looper:取消息队列取消息,主线程一创建,Looper就有了

    使用步骤:

    1。主线程定义Handler

     SDk编程基础-LMLPHP

     2。使用handler重写handler里面的bandlemessage()方法

    SDk编程基础-LMLPHP

       3。在主线程创建hanndler子线程发消息

     SDk编程基础-LMLPHP

     4。handlermessage方法里更新UI

    SDk编程基础-LMLPHP

05-27 14:30