第一章:Android简介与环境介绍

时间:16周,每周4课时,每次两节课。
考核:雪梨教育(55%)+平时成绩(15%)+期末成绩(30%)

Android是Google公司和开放手机联盟领导及开发的基于Linux平台的、开源的智能操作系统。Android平台由操作系统、中间件、用户界面和应用软件组成。






Android都是由以下四大组件组成的。Activity组件是重点。
在这里插入图片描述

  • Activity(活动):
    一个Activity组件就是一个单独的屏幕,每一个都被实现为一个独立的类,并且会继承“Activity基类“,大多数应用程序都是由多个界面(Activity)组成的。

  • BroadcastReceiver(广播消息接收器):
    让用户对一个外部事件做出响应。

  • Service(服务):
    较长生命周期并且没有用户界面的程序。运行在后台。跟Activity是兄弟。

  • ContentProvider(内容提供者)
    多应用之间数据共享,数据存放在数据库中,Android常用的数据库为(SQLite)

应用中,每个界面对应一个Activity,每个Activity由一个布局(XML)来决定如何显示。(user interface/UI)
UI是人机之间传递、交换信息的接口;它实现了信息的内部形式与用户可接受形式之间的转换 (人机交互接口)
– UI负责捕获用户动作,在程序中处理动作。
– UI负责显示数据给用户。

Android用户界面采用MVC(Model-View-Controller)框架来接收用户动作、显示UI界面及处理数据等工作。
控制器:处理用户的数据。
视图:显示用户界面,与用户交互。
模型:数据模型。

Android用户界面MVC模式

  • 模型层
    模型层负责对数据的操作、对网络服务等的操作。
    在Android中,数据库/文件操作、ContentProvider、网络访问等等充当模型层。
    模型层后续会逐步介绍,在此不再赘述。

  • 控制器层
    控制器负责接受用户动作请求(如按键动作或触摸屏动作等),调用指定模型处理用户请求(如读取数据库、发送网络请求等),响应用户结果(如返回视图界面等)。
    在Android系统中,控制器的责任由Activity承担,意味着Activity负责接收用户请求、调用模型方法、响应用户界面等操作(Activity不应承担过多业务逻辑(应交给模型层))。

  • 视图层
    • 视图层主要负责用户界面(UI)的设计(页面布局XML文件等)。
    • 在Android中使用XML布局文件实现视图层和模型层的分离。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Android界面开发过程:

  1. 分析Activity,编写布局
  2. 在Activity中建立相应对象,设置属性
  3. 在Activity中建立对象,设置相应监听器方法
  4. 设计逻辑

Android视图层简介:

视图层采用视图树(View Tree)模型:用户界面中的界面元素以树型结构组织在一起,整个视图界面为一个视图树模型。
视图树:由View控件或ViewGroup(视图组)构成。

在这里插入图片描述

Android视图层简介

View控件是界面的最基本的可视单元,是Android视图界面的基类。
例如:文本(TextView)、输入框(EditText)……
ViewGroup是由其它View或ViewGroup组成的显示单元,继承自View类。

ViewGroup功能:提供了一种布局方法,可以按照该布局定制视图的外观和顺序
例如:LinerLayout、FrameLayout……
在这里插入图片描述
右面的继承左面的所有属性与方法!!!

Android中创建用户视图界面基本流程:

确定视图界面所采用的布局方式(暂用LinearLayout)
为视图界面添加视图组件

Android中创建视图界面有3种方法:

使用可视化编辑方式,创建用户视图界面
最简单的布局方式,但不适合创建复杂布局

使用XML代码方式,创建用户视图界面
最常用的布局方式,但只能创建静态界面
使用findViewById( )方法得到对象

使用Java代码方式,动态创建用户视图界面
最灵活的布局方式,但复杂度较大
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);引用布局文件XML格式
    Log.e("helloworld","日志内容");
    
快速导包  ALT + ENTER
获取布局文件中视图控件的对象,通过ID寻找
    TextView tvText = findViewById(R.id.helloworld);
    tvText.setText("hello android");


用纯java代码实现视图界面
context环境上下文,activity继承了context类,所以可以作为参数。
    TextView tvCountent = new TextView(this);
    tvCountent.setText("我是java代码创建的");
    setContentView(tvCountent);//调用视图,出现东西

在这里插入图片描述

Android学习路线:

在这里插入图片描述

在这里插入图片描述


Android系统框架

应用程序层,应用程序框架层,核心类库层,内核层(从上到下)。
Linux内核层相关驱动,                                     C语言
核心类库(Libaries)和运行时环境(Runtime),             C\C++
应用程序框架(Application Framework),                   Java     (重要)上面的类库用java封装
应用程序(Application),                                 Java等

在这里插入图片描述

Surface Manager,支持显示子系统的访问,提供应用程序与2D3D图像层的平滑连接
Media Framework,实现音视频的播放和录制功能
SQLite,轻量级的关系数据库引擎
OpenGL ES,基于3D图像加速
FreeType,位图与矢量字体渲染
WebKit,Web浏览器引擎
SGL,2D图像引擎
SSL,数据加密与安全传输的函数库
Libc,标准C运行库,Linux系统中底层应用程序开发接口

内核层是硬件驱动,Libraries是对内核层的封装,用c/c++实现,应用框架层用Java实现


Linux内核层

  • 硬件和其他软件堆层之间的一个抽象隔离层
  • 提供安全机制、内存管理、进程管理、网络协议堆栈和驱动程序等核心系统服务
  • Driver是驱动程序的意思,与硬件底层最接近部分
    在这里插入图片描述


核心类库和运行时环境层

  • 由核心运行库和Android运行时环境构成函数库,主要提供一组基于C/C++的函数库
Surface Manager      提供应用程序的2D3D图像层的平滑连接
Media Framework      实现音视频的播放和录制功能
SQLite               轻量级的关系数据库引擎(数据库引擎)
OpenGL ES            基于3D图像加速(ES是简化版本)
FreeType             位图与矢量字体渲染
WebKit               Web浏览器引擎(手机浏览器引擎)
SGL                  2D图像引擎
SSL                  数据加密与安全传输的函数库
Libc                 标准C运行库,Linux系统中底层应用程序开发接口


核心类库和运行时环境层

Android运行时环境:

  • 核心库,提供Android系统特有函数功能和Java语言函数功能
  • Dalvik虚拟机,实现基于Linux内核的线程管理和内存管理
  • Android5.0开始,ART取代了Dalvik虚拟机

运行时环境指的是应用程序的环境。

在这里插入图片描述
左面由C/C++开发,右面由JAVA开发。
ART取代下面那个虚拟机,使得手机更快 ,Core Libraries是虚拟机。



应用程序框架层

提供Android平台基本的管理功能和组件重用机制:

- Activity Manager,      管理应用程序的生命周期
- Windows Manager,       启动应用程序的窗体
- Content Provider,      共享私有数据,实现跨进程的数据访问
- (内容提供者)            实现数据共享。
- Package Manager,       管理安装在Android系统内的应用程序
- Telephony Manager,     管理与拨打和接听电话的相关功能
- Resource Manager,      允许应用程序使用非代码资源
- Location Manager        管理与地图相关的服务功能
- Notification Manager    允许应用程序在状态栏中显示提示信息

在这里插入图片描述


应用程序层

提供一系列的核心应用程序
包括电子邮件客户端、浏览器、通讯录和日历等
在这里插入图片描述


Android的版本

Android系统的版本有很多,Google使用API级别来标识具体的Android版本,不需要记忆,理解就好。
Android程序采用应用程序的向后兼容性,使用旧接口的应用,能够运行在新的系统上。

Android系统版本与API等级对应关系表:
http://blog.csdn.net/s003603u/article/details/53318638

2007年Google发布Android操作系统的十几年时间中多次发布新的版本
2019年发布10.0
Android  10,主要增加的新特性比如说基于可折叠手机的多窗口的支持、对于5G网络的支持等

在这里插入图片描述


Gradle环境配置

是构建Android程序的工具,打包成APK(安卓程序安装包)
更新Jar包。修改Gradle配置文件就好了

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

Gradle个版本下载地址:
https://services.gradle.org/distributions/

Android Studio视图

1.Android视图:

列出一个工程的常用文件夹
Gradle文件单独列出,方便修改
推荐使用此视图

1.1 app —> java -->MainActivity

java源代码文件

1.2. app–> res

资源文件

1.2.1 app —> res–> drawable

图片

1.2.2 app —> res–> layout

XML格式,布局文件

1.2.3 app —> res–> mipmap

图片

1.2.4 app —> res–> values

值相关资源(颜色,字符串,格式)

2.Project视图:

以Project(项目文件)为根目录列出
跟本地文件列表是一样的,展示工程中所有的文件
一般的工程常用的是一个app模块
可看到工程中所有文件

text–app–src存放所有的java’源代码与资源文件

3.Packages视图:

以包为单位列出所有的源代码及资源

原res文件下的东西

用包的形式展示文件

在这里插入图片描述

在这里插入图片描述

MainActivity
-----------------------------
package com.example.text;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    MainActivity最终继承自Activity类

    @Override       注解,表示此方法是重写的方法
    打开文件自动调用此方法,程序的入口方法
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        R类有个静态属性成员,就是布局文件中的Layout(app--res--layout)
        R。类型。名称   通过R类修改资源
        日志输出功能,导入android.util.log
       Log.e("标签","日志内容");

        获取布局文件中的视图控件的ID,java中获取XML文件对象
        TextView list=findViewById(R.id.name1);//int类型参数,必须先得到ID属性,通过R类访问对象
        list.setText( "1213132132");

    }
}




activity——main
<!--此页面是布局页面,负责呈现画面-->


<?xml version="1.0" encoding="utf-8"?>
<!--版本号  编码方式  第一行永远不动-->
<!--所有数据在的文件是布局文件-->

<!--下一行的ConstraintLayout是布局类型
xmlns 是命名空间 xml文件的name'space

-->
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<!--上面那些都是元素属性  双引号里面的是属性的值
    android:layout_width="match_parent"
    在android命名空间中定义了layout属性
-->




    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>



AndroidManifest.xml



<?xml version="1.0" encoding="utf-8"?>
<!--清单文件  包含所有使用的组件-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.text">



<!--  application   对应应用程序    设置整个应用程序的属性 -->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Android应用程序的构成

在这里插入图片描述

eclispe                AndroidStudio
workspace---------------project
project-----------------module



LogCat的使用

LogCat的右上方的五个字母表示五种不同类型的日志信息 ,他们的级别依次增高
[V]:详细(Verbose)信息
[D]:调试(Debug)信息
[I]:通告(Info)信息
[W]:警告(Warn)信息
[E] :错误(Error)信息

LogCat程序调试步骤

  • 引入android.util.Log包
  • 使用Log.v()、 Log.d()、 Log.i() 、Log.w() 和 Log.e()五个函数在程序中设置“日志点”
  • 当程序运行到“日志点”时,应用程序的日志信息便被发送到LogCat中
    判断“日志点”信息与预期的内容是否一致
  • 进而判断程序是否存在错误
  • Log.v()用来记录详细信息,Log.d()用来记录调试信息,Log.i()用来记录通告信息,Log.w()用来记录警告信息,Log.e()用来记录通错误信息

猜你喜欢

转载自blog.csdn.net/qq_44627608/article/details/104391225
今日推荐