1 入门:投身新领域

1.Android的组成

1.1 布局-Layout

布局(Layout)定义各个屏幕是什么样的

典型的Android应用往往由一个或多个屏幕组成。可以使用布局来定义外观,也就是定义各个屏幕看上去是什么样。布局通常由XML定义,可能包含一些GUI组件,如按钮、文本域和标签。

布局告诉Android:你的应用的屏幕分别是什么样的

1.2 活动-activity

布局只定义了应用的外观。还要编写Java代码来定义应用应当做些什么。有一种特殊的Java类,称为活动(activity),活动会决定要使用哪个布局,并告诉应用如何对用户做出响应。举个例子,如果布局中包含一个按钮,就需要在活动中写Java代码来定义按下这个按钮时要做些什么。

活动定义应用应该做什么

1.3 额外的资源

除了Java代码和布局,Android应用通常还需要额外的资源,如图像文件和应用数据。可以为应用增加你需要的任何额外的文件。
Android应用实际上就是某些目录中的一组文件。构建应用时,所有这些文件会“捆绑”在一起构成一个应用在你的设备上运行。

资源可能包括声音和图像文件

2.Android平台剖析

Android平台由很多不同的组件构成,包括一些核心应用(如 通讯录),一组API以及大量支持文件和库,这些API可以帮助你控制应用外的外观和行为。

  • 应用:Android提供了一组核心应用,如通讯录(Contacts),日历(Calendar),地图(Maps)以及浏览器
  • 应用框架:构建你的应用时,同样可以使用核心应用所用的API。可以使用这些API控制你的应用的外观和行为。
  • :应用框架底层有一组C和C++库。可以通过框架API访问这些库
  • Android运行时环境:提供了一组核心库,实现了Java编程语言的大部分功能。所有Android都在自己单独的进程中运行
  • Linux内核:最底层是Linux内核。Android依赖这个内核提供驱动以及核心服务(如安全和内存管理)。

 3.Android SDK

Android设备并不会运行.class和.jar文件。实际上,为了提高速度和电池性能,Android设备会使用自己的优化格式表示编译代码。因此,不能使用常规的Java开发环境,还需要特殊的工具将你的编译代码转换成另一种Andorid格式,还要把他们部署到一个Android设备上,以便应用运行后进行调试。

所有这些都将作为Android SDK的一部分。下面来看看包括什么。

Android软件开发包(Software Development Kit,SDK)包含开发Android应用所需的库和工具:

4.Android项目知识点

> 项目创建是在电子书的N50

4.1 API层次

在Android Studio中创建项目时,需要选择一个Minimum SDK,指的是API层次。一般选择API层次为API 15,这说明它能够在大多数设备上运行。

Minimum SDK:最低SDK,是指你的应用支持的最低版本。应用将在有这个版本或更高版本API的设备上运行。如果设备的API版本比它低,你的应用就无法运行。

Android版本有一个版本号和一个代号。版本号提供了Android的准确版本(比如5.0),代号则是一个更为通用的“友好”的名字,可能涵盖多个Android版本(比如Lollipop)。API层次是指应用使用的API版本。举例来说,对应Android 5.0版本的API层次就是21。

4.2 活动和布局概览

所有Android应用都是由屏幕构成的一个集合,每个屏幕则由一个活动和一个布局组成

<Android应用可以理解为一个或多个屏幕的叠加,通过返回键或者其他案件,实现屏幕的逻辑切换与显示>

活动是用户可以完成的一个确定的事情。比如,可能有一个活动要写emial,照相或者查找某个联系人。活动通常与一个屏幕关联,用Java编写。

布局描述了屏幕的外观。布局写为一个XML文件,它会告诉Android如何组织各个不同的屏幕元素。

下面来详细分析活动和布局如何共同创建一个用户界面:

  1. 设备启动你的应用,创建一个活动对象
  2. 这个活动对象指定一个布局
  3. 活动告诉Android在屏幕上显示这个布局
  4. 在设备上显示包含这个布局的用户界面
  5. 活动通过运行应用代码对交互做出相应
  6. 活动更新
  7. 用户将在设备上看到更新后的显示

 4.3 Android项目在AS中的文件构成

4.4 在模拟器中运行应用

从AndroidStudio中运行应用,从Run之后发生了什么。

编译、打包、部署和运行

选择Run选项时并不只是运行你的应用。它还会处理运行应用所需的所有预备任务:

1.Java源文件编译为字节码

2.创建一个Android应用包或者APK文件,APK文件包含编译的Java文件以及应用所需的所有库和资源

3.假设模拟器还未运行,会启动模拟器并加载AVD

4.一旦启动模拟器并加载AVD,将APK文件上传到AVD并安装

5.AVD启动应该关联的主活动

 4.5 运行HelloWorld应用发生的过程

运行应用时发生了:

1.AndoridStudio启动模拟器,加载AVD,并安装应用。

2.应用启动时,从MainActivity.java创建一个活动对象

3.这个活动指定它要使用布局activity_main.xml

4.活动告诉Android在屏幕上显示布局。另外会显示文本“HelloWorld”

:提到创建一个APK文件时,java源代码会编译为字节码并且增加到APK。我想你是说,它会编译为Java字节码,是吧?

:没错,不过还不止如此。在Android上情况稍有些不同。Android上最大的区别是你的代码并不真正在常规的Java虚拟机中运行。它会在Android运行时环境(Androidruntime,ART)中运行,如果在较老的设备上,则会在ART的前身Dalvik上运行。这说明,可以编写你的Java源代码,用Java编译器把它编译为.class文件,然后这些.class文件会集中到一个DEX格式的文件中,这是更简短、更高效的字节码。然后ART运行DEX代码。在Android中,每个应用都在自己的进程中运行。如果使用常规的JVM,就会需要更多的内存。

4.6 布局文件解析:把字符串值放在strings.xml中而不是硬编码写在代码中

首先来看自动生成的activity_main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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="@string/hello_world"
        />

</RelativeLayout>

其他内容基本都知道了,来看点不知道的。在标签<TextView>中的text属性,可以直接选择硬编码的方式编写文本内容:

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World"
        />

而是使用 上面的编写方式,下面来进行这么写的好处。

android:text="@string/hello_world"

第一部分:@string

告诉Android要从一个字符串资源文件查找文本值。此处,AndroidStudio为我们创建了一个字符串资源文件,名为 strings.xml,这个文件位于 app/src/main/res/values文件夹。

第二个部分 hello_world

表示Android要查找名为hello_wold的资源的值。

“@string/hello_world”表示 查找名为hello_world的字符串资源,并使用相关的文本值。

这么做的主要原因:本地化

假设你创建了一个应用,它可能成为Google Play Store上的一个热门应用。不过,你不希望仅限于某一个国家或语言,可能还想让它国际化,能适应很多不同的语言
如果将文本值分开来放在strings.xml中,就可以使这些问题的处理容易得多不必在各个不同的活动和布局文件中改变硬编码的文本值,完全可以把strings.xml文件替换为一个国际化的版本
把strings.xml用作为维护文本值的一个集中的资源,还可以更容易地全局修改整个应用使用的文本。如果因为公司改名,你的老板要求改变应用中的文字,那么只需要修改strings.xml就可以了.

:问:应用怎么知道要使用哪一个资源文件呢?

:把默认的英语字符串资源文件正常放在app/src/main/res/values文件夹中,法语资源文件放在一个新的文件夹中,名为app/src/main/res/values-fr。如果设备设置为法语,它就会使用applsrclmainlres/values-fr文件夹中的字符串。如果设备设置为任何其他语言,则会使用applsrclmain/res/values中的字符串。

Android之所以能把strings.xml识别为一个字符串资源文件,存在关键的两点:

  • 这个文件位于文件夹app/src/main/res/values中

这个文件夹中的XML包含简单之,如字符串和颜色。

  • 这个文件有一个<resources>元素,它包含一个或多个<string>元素

文件本身的格式指示了这是一个包含字符串的资源文件。<resources>元素告诉Android这个文件包含资源,<string>元素则标识各个字符串资源。

这说明并不需要将你的字符串资源文件命名为strings.xml;如果愿意,完全可以取其他名字,或者还可以将这个文件拆分为多个文件。

每个名/值对有以下形式:

<string name="string_name">string_value</string>

此处的string_name是字符串的标识符,string_value是字符串值本身。

 布局可以使用以下代码获取字符串的值:

5.知识点总结

  1. Android的版本包括版本号、APl层次和代号。
  2. Android Studio是IntelliJ IDEA的一个特殊版本,集成了Android软件开发包(AndroidSoftwareDevelopment Kit,SDK)和gradle构建系统。
  3. 典型的Android应用由活动、布局和资源文件组成。
  4. 布局描述了应用是什么样,位于app/src/main/res/layout文件夹。
  5. 活动描述了应用做什么,以及如何与用户交互。你写的活动放在app/src/main/java文件夹中。
  6. strings.xml包含字符串名/值对。这个文件用于将文本值与布局和活动相分离,从而支持本地化。
  7. AndroidManifest.xml包含有关应用自身的信息。这个文件位于app/src/main文件夹。
  8. AVD是一个Android虚拟设备。它运行在Android模拟器中,可以模仿真正的Android物理设备。
  9. APK是一个Android应用包。就像是对应Android应用的一个JAR文件,包含应用的字节码、库和资源。在设备上安装应用时就是要安装APK。
  10. Android应用使用Android运行时环境(ART)在单独的进程中运行。
  11. RelativeLayout用于将GUI组件放在布局的相对位置上。Textview元素用于显示文本。
     
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值