SDk Programming Fundamentals

A, Android Description:

       Developed by Andy Rubin,

  Common mobile version: Columbia Valley: Nexus, Huawei: EMUI, Meizu: Flyme

  Adnroid is running on the Java Virtual Machine (JVM) most of the free open source applications are easily available through the permissions control user sensitive information.

Two, Android framework:

 

       Android virtual machine dalvik and JVM difference (copyright issues developed dalvik):

Dalvik

Jvm

Dex file is identified

JAR package is identified class (class of a plurality of compressed)

Architecture is based on register

Architecture is based on the stack

       Android ART mode (since the 4.4 appear): When installing an application to convert the file into dex native machine code exists

Third, the development environment:

       SDK directory

 

Enter adb shell

 

Android Studio apk two kinds of modes:

  • 1. Debug (default be signed: debug.keystore)
  • 2。Release

Four, SDK basis:

       1. View control (View): Use xml layout file defines the interface. Most of the UI components are placed android.widget package and its subpackages.

Resource File Overview      

  2. Layout description:

         1. Linear layout LinearLayout

         2. Relative layout RelativeLayout

         3. Frame layout FrameLayout

         4. Table layout TableLayout

         5. Grid layout GridLayout

         6. Absolute layout AbsoluteLayout

  3. Textview and EditText

         TextView: inherited from EditText and Button View is the parent of two components, can only display text information

         EditText: allows the user to edit the text

  4. ImageView: display pictures

  5。Button和ImageButton

Button

ImageButton

Button click event

There are text attributes

There src attribute

You can set text

You can set the picture

  6. RadioButton radio button

     

    

  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

     

 

Guess you like

Origin www.cnblogs.com/heixiang/p/10962343.html