资讯详情

Android系统基础与常用布局

Android学习笔记

一、Android系统简介

1.1 体系架构

采用了分层的架构,如下图

在这里插入图片描述

1.1.2 Linux内核

Android 平台的基础是 Linux 核心。Android Runtime (ART) 依靠 Linux 内核来执行底层功 可以,如线程和低层内存管理。 Linux 内核可让 Android 使用主要安全功能并允许设备 制造商为著名的核心开发硬件驱动程序

1.1.3 Android Runtime

对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用程序都在自己的过程中运行,并且 且有其自己的 Android Runtime (ART) 实例。ART 通过执行编写 DEX 低内存设备运行文件 多个虚拟机,DEX 文件是专为的 Android 经过优化,设计的字节码格式内存很少。编 翻译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,的字节码 Android 平台上运行

1.1.4 原生C/C 库

许多核心 Android 例如, ART 和 HAL)需要构建自原生代码 C 和 C 编写 的原生库。Android 平台提供 Java 框架 API 向应用程序显示部分原生库的功能。例如,你可以 通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,支持在应用中绘制和操作 2D 和 3D 图形。需要开发 C 或 C 可以使用代码应用 Android NDK 从原始代码直接访问某某 一些本土平台库

1.1.5 Java API框架

您可通过以 Java 语言编写的 API 使用 Android OS 整个功能集 API 形成创建 Android 应 可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

  1. 视图系统丰富可扩展,可用于构建应用 UI,包括列表、网格、文本框、按钮 可嵌入的网络浏览器
  2. 用于访问本地化字符串、图形、布局文件等非代码资源的资源管理器
  3. 通知管理器允许所有应用程序在状态栏中显示自定义提醒
  4. Activity 管理器用于管理应用程序的生命周期,并提供常见的导航返回堆栈
  5. 内容提供程序允许应用程序访问其他应用程序(如联系人应用程序)中的数据或共享自己 的数据 开发者可以完全访问 Android 系统应用框架 API

1.1.6 系统应用

Android 在电子邮件、短信、日历、互联网浏览和联系人等核心应用中附加一套。平台应随附 没有特殊状态,就像用户可以选择安装的应用一样。因此,第三方应用程序可以成为用户的默认网络浏览 器、短信 Messenger 甚至默认键盘(有一些例外,比如系统的设置应用)。可用于系统应用 家庭应用程序,以及开发以从自己的应用程序中访问的主要功能。例如,如果你的应用程序需要发送短信,你 您可以调用已安装的短信应用程序向您指定的接收者发送消息,而无需自行构建此功能。

1.2 应用组件

1.2.1Android开发四个组件

  • 活动 (Activity)
    • Android 中,Activity它是所有程序的基础,所有程序的过程都在运行Activity 之中,Activity可 这是开发人员遇到的最频繁和最频繁的事情Android 最基本的模块之一。
    • 一般一个Android 多个应用程序Activity 组成Activity 之间Android的应用 可以进 互相跳转。
  • 服务(Service)
    • Service 是android 该系统系统中的一个组件Activity 等级差不多,但他不能自己操作, 它只能在后台运行,并且可以与其他组件交互。Service 长生命周期代码没有界面。
    • 例如,打开音乐播放器程序。如果你想在这个时候上网,打开它Android浏览 虽然此时已进入浏览器程序,但歌曲播放并未停止,而是在后台继续 一个接一个地播放。事实上,这种播放是由音乐播放的Service进行控制。
  • 广播接收器 (BroadcastReceiver )
    • 在Android 中,Broadcast它是一种广泛应用于应用程序之间传输信息的机制。
  • 内容提供者 (Content Provider )
    • Content Provider 是Android第三方应用数据访问方案
    • 在Android除了放的保护非常严格,除了放置SD卡中的数据,应用程序持有的数据 不允许直接访问库、文件等内容。Android当然不会真的把每一个应用都做成一个 这是一个孤岛,它为所有应用程序准备了一扇窗户。Content Provider。

1.3 平台优势

1.3.1 开放性

  • 在优势方面,Android平台首先是开放的,开发的平台允许任何移动终端制造商加入Android 在联盟中。随着用户和应用程序的日益丰富,显著的开放性可以使其拥有更多的开发者,一个新的平坦 台湾也将很快成熟。
  • 开放性对于Android就发展而言,它有利于积累人气。这里的人气包括消费者和制造商,对消费者来说 最大的好处是丰富的软件资源。开放的平台也会带来更大的竞争,让消费者能够 以更低的价格购买最喜欢的手机。

1.3.2 丰富的硬件

  • 在优势方面,Android平台首先是开放的,开发的平台允许任何移动终端制造商加入Android 联盟中来。随着用户和应用程序的日益丰富,显著的开放性可以使其拥有更多的开发者,一个新的平面 台湾也将很快成熟。 开放性对于Android就发展而言,它有利于积累人气。这里的人气包括消费者和制造商,对消费者来说 最大的好处是丰富的软件资源。开放平台也会带来更大的竞争,这样消费者就可以了 以更低的价格购买最喜欢的手机。

1.3.3 方便开发

  • Android该平台为第三方开发商提供了一个非常广泛和自由的环境,不会受到各种规章制度的阻碍 想象一下会诞生多少新颖独特的软件。但也有两面性,血腥、暴力、情色程序和游戏 如何控制是留给Android难题之一。

1.3.4 Google应用

  • 在互联网的Google从搜索巨人到全面的互联网渗透,已经走过了10年的历史,Google服务如地图, 邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的手机 Google服务。

二、Android UI开发

2.1 UI定义

  • 用户界面(User Interface,简称 UI,也被称为用户界面系统与用户之间的交互和信息交换 实现信息内部形式与人类可接受形式之间的转换。

  • 软件设计可分为编码设计和编码设计两部分UI设计。

  • Android应用程序界面包含用户可以查看和交互的所有内容。Android 提供各种预置 UI 组 件,例如结构化布局对象和 UI 您可以使用这些组件为您的应用程序构建图形界面。

  • Android 还 为构建对话框、通知和菜单等特殊界面提供其他界面模块。

2.2 布局

布局(layout)可定义应用程序中的界面结构(例如 Activity 界面结构)。布局中的所有元素都使用 View 和 ViewGroup 构建对象的层次结构。View 通常绘制用户可以查看和交互的内容。然而, ViewGroup 用于定义不可见容器 View 和其他 ViewGroup 对象的布局结构。

2.2.1 布局的结构

  • 定义界面布局的视图层次结构图:

  • View 对象通常被称为微件 Button 或 TextView 。

  • ViewGroup 对象通常称为“布局”,可以是提供其他布局结构的众多类型之一,例如 LinearLayut 或 ConstraintLayout 。

2.2.2 声明布局

  • 在 XML 中声明界面元素,Android 提供对应 View 类及其子类的简明 XML 词汇,如用于微件和布 局的词汇。 也可使用 Android Studio 的 Layout Editor,并采用拖放界面来构建 XML 布局。
<?xml version="1.0" encoding="utf-8"?>
<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">
<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>

2.2.3 编写XML

  • 利用 Android 的 XML 词汇,按照在 HTML 中创建包含一系列嵌套元素的网页的相同方式快速设计 UI 布局及其包含的屏幕元素
  • 每个布局文件都必须只包含一个根元素,并且该元素必须是视图对象或 ViewGroup 对象
  • 定义根元素后,可以子元素的形式添加其他布局对象或控件,从而逐步构建定义布局的视图层次结构
  • 在 XML 中声明布局后,以 .xml 扩展名将文件保存在Android 项目的 res/layout/ 目录中

2.2.4 加载XML资源

  • 当编译应用时,系统会将每个 XML 布局文件编译成 View 资源。在 ``Activity.onCreate()回调 内,通过调用setContentView(),并以R.layout.layout_file_name` 形式向应用代码传 递布局资源的引用 ,加载应用代码中的布局资源。
@Override
protected void onCreate(Bundle savedInstanceState) { 
        
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

2.2.5 内边距和外边距

一般只有字体大小用sp,其余均用dp。

2.3 常用布局

Android七大布局:LinearLayout(线性布局)、TableLayout(表格布局)、RelativeLayout(相对布局)、FrameLayout(层布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)、ConstraintLayout(约束布局)。

继承关系:

2.3.1 线性布局 - LinearLayout

  • LinearLayout 是一个视图容器,用于使所有子视图在单个方向(垂直或水平)保持对齐。您可 使用 android:orientation 属性指定布局方向。
  • android:orientation="horizontal"水平对齐

  • android:orientation="vertical"

  • android:gravity:内部控件对齐方式,常用属性值:center、center_vertical、center_horizontal、top、bottom、left、right等。android:gravity在布局组件 RelativeLayout、TableLayout 中也有使用,在 FrameLayout、AbsoluteLayout 则没有这个属性。

  • center:居中显示,这里并不是表示显示在 LinearLayout 的中心,当 LinearLayout 线性方向为垂直方向时,center 表示水平居中,但是并不能垂直居中,此时等同于 center_horizontal 的作用;同样当线性方向为水平方向时,center 表示垂直居中,等同于 center_vertical。top、bottom、left、right 顾名思义为内部控件居顶、低、左、右布局。

  • 这里要与 android:layout_gravity 区分开,layout_gravity 是用来设置自身相对于父元素的布局。

  • android:layout_weight:权重,用来分配当前控件在剩余空间的大小。使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把 width 设置为零。

2.3.2 相对布局 - RelativeLayout

  • 相对布局 :子视图可通过相应的布局属性,设定相对于另一个兄弟视图或父视图容器的相对位置

  • 属性说明:

    • 相对于兄弟元素

      属性名称 属性含义
      android:layout_below=“@id/aaa” 在指定View的下方
      android:layout_above=“@id/aaa” 在指定View的上方
      android:layout_toLeftOf=“@id/aaa” 在指定View的左边
      android:layout_toRightOf=“@id/aaa” 在指定View的右边
      android:layout_alignTop=“@id/aaa” 与指定View的上边界一致
      android:layout_alignBottom=“@id/aaa” 与指定View下边界一致
      android:layout_alignLeft=“@id/aaa” 与指定View的左边界一致
      android:layout_alignRight=“@id/aaa” 与指定View的右边界一致
    • 相对于父元素

      属性名称 属性含义
      android:layout_alignParentLeft=“true” 在父元素内左边
      android:layout_alignParentRight=“true” 在父元素内右边
      android:layout_alignParentTop=“true” 在父元素内顶部
      android:layout_alignParentBottom=“true” 在父元素内底部
    • 对齐方式

      属性名称 属性含义
      android:layout_centerInParent=“true” 居中布局
      android:layout_centerVertical=“true” 垂直居中布局
      android:layout_centerHorizontal=“true” 水平居中布局
    • 间隔

      属性名称 属性含义
      android:layout_marginBottom=“” 离某元素底边缘的距离
      android:layout_marginLeft=“” 离某元素左边缘的距离
      android:layout_marginRight =“” 离某元素右边缘的距离
      android:layout_marginTop=“” 离某元素上边缘的距离
      android:layout_paddingBottom=“” 往内部元素底边缘填充距离
      android:layout_paddingLeft=“” 往内部元素左边缘填充距离
      android:layout_paddingRight =“” 往内部元素右边缘填充距离
      android:layout_paddingTop=“” 往内部元素右边缘填充距离

2.3.3 帧布局 - FrameLayout

  • 最简单的一种布局,没有任何定位方式,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时 刻就只能看到最上面的那个组件,后续添加的控件会覆盖前一个。

2.3.4 约束布局 - ConstraintLayout

  • 传统的Android开发当中,界面基本都是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,我也一直都不推荐使用可视化的方式来编写Android应用程序的界面。而ConstraintLayout就是为了解决这一现状而出现的。它和传统编写界面的方式恰恰相反,ConstraintLayout非常适合使用可视化的方式来编写界面,但并不太适合使用XML的方式来进行编写。当然,可视化操作的背后仍然还是使用的XML代码来实现的,只不过这些代码是由Android Studio根据我们的操作自动生成的。另外,ConstraintLayout 还有一个优点,它可以有效地解决布局嵌套过多的问题。我们平时编写界面,复杂的布局总会伴随着多层的嵌套,而嵌套越多,程序的性能也就越差。ConstraintLayout则是使用约束的方式来指定各个控件的位置和关系的,它有点类似于 RelativeLayout,但远比RelativeLayout要更强大。
属性名称 属性含义
layout_constraintTop_toTopOf 将所需视图的顶部与另一个视图的顶部对齐
layout_constraintTop_toBottomOf 将所需视图的顶部与另一个视图的底部对齐
layout_constraintBottom_toTopOf 将所需视图的底部与另一个视图的顶部对齐
layout_constraintBottom_toBottomOf 将所需视图的底部与另一个视图的底部对齐
layout_constraintLeft_toLeftOf 将所需视图的左边与另一个视图的左边对齐
layout_constraintLeft_toRightOf 将所需视图的左边与另一个视图的右边对齐
layout_constraintRight_toLeftOf 将所需视图的右边与另一个视图的左边对齐
layout_constraintRight_toRightOf 将所需视图的右边与另一个视图的右边对

标签: jack电子连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台