一、Android简介:

由Andy Rubin开发,

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

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

二、Android系统框架:

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

Dalvik

Jvm

识别的是dex文件

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

架构是基于寄存器

架构是基于栈

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

三、开发环境:

SDK文件目录

进入adb shell

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单选框

     

    

  7。Spinner

    1。静态方式

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

      

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

    效果

    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

    

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

        1。Dialog主体是List回调接口

    

     2。Dialog主体是CheckBox回调接口

   3。Dialog主体是RadioButton回调接口

       

     4。完全自定义Dialog内容

      

  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指定

      源码:

      Eg:启动第二个页面

      

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

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

       

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

        

        注意:一条<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重新活动。

          

      Activity四种活动状态:

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

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

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

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

      Activity生命周期:

           

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

          

          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()取消注册

      广播的注册

         静态注册

      

         动态注册

      

     服务:

特点:1。后台运行

2。没有界面

3。无法自己启动

4。单例模式

生命周期

       一个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原理:

    

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

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

    使用步骤:

    1。主线程定义Handler

     

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

    

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

     

     4。handlermessage方法里更新UI

    

SDk编程基础的更多相关文章

  1. (一)Win消息机制,SDK编程基础

    一,基本概念 SDK:软件开发工具包(缩写:SDK.外语全称:Software Development Kit) API:应用程序接口 WINAPI:Windows平台下的系统调用,包含 window ...

  2. IOS学习之十七:Grand Central Dispatch(GCD)编程基础

    IOS学习之十七:Grand Central Dispatch(GCD)编程基础   有过编程经验的人,基本都会接触到多线程这块. 在java中以及Android开发中,大量的后台运行,异步消息队列, ...

  3. 海康SDK编程指南(C#二次开发版本)

    海康SDK编程指南 目前使用的海康SDK包括IPC_SDK(硬件设备),Plat_SDK(平台),其中两套SDK都需单独调用海康播放库PlayCtrl.dll来解码视频流,返回视频信息和角度信息.本文 ...

  4. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记4——Direct3D编程基础

    第11章 Direct3D编程基础 2D游戏是贴图的艺术,3D游戏是渲染的艺术.这句话在我学过了之前的GDI编程之后,前一句算是有所体会,现在是来理解后一句的时候了. 安装DirectX SDK配置啥 ...

  5. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  6. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  7. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

  8. T-Sql编程基础

    T-sql编程 入门小游戏 T-sql编程基础,包括声明变量,if判断,while循环,以及使用一些基本函数. 记得在学校的时候,写过一个二人对打的文字输出游戏. 上代码 alter proc usp ...

  9. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

随机推荐

  1. 【C#】身份证号正确性验证及正则表达式格式验证

    身份证前两位各省对应的编号是: 1.华北地区:北京市|11,天津市|12,河北省|13,山西省|14,内蒙古自治区|15: 2.东北地区: 辽宁省|21,吉林省|22,黑龙江省|23: 3.华东地区: ...

  2. 7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(GPRS模块SSL连接MQTT)

    6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT) 由于GPRS是直接和GPRS基站进行连接,其实对于GPRS而言,即使不加 ...

  3. sass、less异同

    相同点: 1.混入(Mixins):class中的class 2.参数混入:可以传递参数的class,就像函数一样 3.嵌套规则:class中嵌套class,从而减少重复的代码 4.运算:css中用上 ...

  4. python: int to unicode string

    >>> import types >>> print type(str(2)) <type 'str'> >>> ')) <ty ...

  5. 2018-2019-2 网络对抗技术 20165318 Exp7 网络欺诈防范

    2018-2019-2 网络对抗技术 20165318 Exp7 网络欺诈防范 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 简单应用SET工具建立冒名网站 ettercap D ...

  6. springboot做api服务时不使用thymeleaf的相关警告DefaultTemplateResolverConfiguration 的消除

    springboot在不配置thymeleaf相关属性的情况下,会提示如下的问题 DefaultTemplateResolverConfiguration - Cannot find template ...

  7. Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  8. Linux 下杀毒软件 clamav 的安装和使用

    安装依赖: 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum install -y openssl yum inst ...

  9. inode是什么?

    理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个 ...

  10. SpringBoot 基础(二)

    目录 SpringBoot基础(二) 一.操作数据库 1. SpringBootJdbc 2. SpringBoot 整合 Mybatis 3. SpringBott 使用JPA 二.使用 Thyme ...