- 小白實戰(zhàn)大前端:移動端與前端的互通之路
- 陳辰
- 1314字
- 2022-06-28 16:19:33
2.2.1 Activity的使用場景
Activity的使用場景其實可以歸結為一句話,只要有界面展示,我們就需要它。雖然我們把Activity與HTML進行對比學習,但是還需要了解Activity與HTML的不同之處。
第一個不同是package的概念。在Android開發(fā)中,package有很多作用,比如把package理解成一個功能的集合,標識App所屬公司或組織,或者作為引入文件的路徑標識或者文件系統(tǒng)路徑。比如圖2-3中,com.example.chenchen.book其實就是一個package,com.example.chenchen.book是該package所在的路徑。但是在前端開發(fā)概念中,HTML本身并沒有package的概念,通常情況下,我們把HTML引入某個文件的引入地址為HTML的文件路徑。

圖2-3 Android程序中的package
第二個不同是布局文件。用戶界面通常情況下通過標簽的方式直接寫在HTML文件中,但是我們不能直接把布局文件標簽寫在Activity中。
注意
我們可以引入Android的各種標簽類,通過動態(tài)添加畫布的方式將其添加到界面中。前端界面也可以這樣做,現(xiàn)在市面上流行的React、Angular等都是使用這種方法對界面進行繪制的。
Android本質(zhì)上是一個Java類,這個Java類通常繼承了AppCompatActivity類。當我們要對界面進行渲染的時候,需要先設置一個布局文件到Activity中,在圖2-3所示的代碼中,代碼setContentView(R.layout.activity_main)就是設置畫布的。這個畫布的路徑通常會在項目路徑的/res/layout/下,如圖2-4所示,activity_main.xml文件目前就是App的唯一布局文件。

圖2-4 Android布局文件activity_main.xml路徑
注意
當Android應用程序被編譯時,會自動生成一個R類,其中包含了所有res/目錄下資源的ID,如布局文件、資源文件、圖片(values下所有文件)的ID等。在編寫Android應用需要用到這些資源的時候,你可以使用R類,通過子類+資源名或者直接使用資源ID來訪問資源。
接下來在Android Studio中打開這個文件,文件中的代碼如圖2-5所示。圖2-5左側為activity_main.xml布局文件代碼,右側為該布局文件的預覽效果,我們也可以這樣理解:右側所展示的界面就是activity_main.xml展示在手機App上的界面。

圖2-5 Android布局文件activity_main.xml內(nèi)容
接下來讓我們共同分析一下activity_main.xml文件的具體內(nèi)容。第一行代碼<?xml ver-sion="1.0" encoding="utf-8"?>主要是聲明xml文件的版本,以及具體編碼字符集。類似2.1.2節(jié)介紹的<!doctype html>和<meta charset="utf-8">。
第2行中的android.support.constraint.ConstraintLayout其實是一種布局方式,叫作約束布局,與android.support.constraint. RelativeLayout類似,幾年前Android開發(fā)者更習慣使用RelativeLayout來進行相對布局。對比前端來說,我們可以把這種布局方式理解為一個HTML頁面設置了position: relative屬性,也就是頁面中的子元素設置了相對布局方式。不同的地方是,android.support.constraint.ConstraintLayout可以通過角度約束的方式來對activity_main.xml中的內(nèi)容進行布局。這里我們可以讓大家感受一下Android布局,先觀察代碼清單2-6。
代碼清單2-6 ConstraintLayout布局
<Button android:id="@+id/button_first" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="first" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> <Button android:id="@+id/button_second" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="second" app:layout_constraintCircle="@+id/button_first" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="parent" app:layout_constraintCircleAngle="120" app:layout_constraintCircleRadius="100dp" />
在代碼清單2-6中,有兩個按鈕元素<Button>,分別叫first和second,其他屬性先不用關注,因為我們會在第3章進行詳細介紹,現(xiàn)在只看constraintCircle-Angle = 120和constraintCircleRadius = 100dp就可以了。這兩個屬性表達的含義是以first的<Button>標簽為圓心點,然后在first的<Button>標簽120度的方向,且兩個標簽的圓心點相距120dp的地方展示second的<Button>。頁面具體展示成什么樣子,我們可以通過Android Studio的預覽部分看一下,如圖2-6所示。

圖2-6 ConstraintLayout約束布局樣例
注意
角度和距離的計算都依賴于<Button>標簽的中心點,也就是垂直、水平方向都是中心的點,constraintCircleAngle=120是Android中特有的度量單位,是一種相對設備像素。關于dp部分內(nèi)容可參見3.2.3節(jié),此處只需要理解它是一種度量單位即可。
至于xmlns:android="http://schemas.android.com/apk/res/android",則是xml關于命名空間的定義,主要是防止xml的命名沖突。http://schemas.android.com/apk/res/android看起來是一個訪問地址,但是其實訪問不了,它也是一個語法文件標識,有了它之后你在輸入“android:”的時候,就會彈出這個命名空間下的對應屬性,如圖2-7所示。

圖2-7 “android:”命令提示
Activity和它所依賴的布局文件介紹到這里就結束了,接下來會介紹Activity的常規(guī)配置。
- Dreamweaver CS5網(wǎng)頁設計與制作教程
- 網(wǎng)頁配色從入門到精通
- 全能網(wǎng)頁設計師精煉手冊
- HTML+CSS+JavaScript網(wǎng)頁設計與布局:從新手到高手
- ADOBE DREAMWEAVER CS6 標準培訓教材
- CSS圖鑒
- 人人都玩開心網(wǎng):Ext JS+Android+SSH整合開發(fā)Web與移動SNS
- ASP快速建站全程實錄
- Web綜合實戰(zhàn)教程
- Dreamweaver CS3網(wǎng)站制作炫例精講
- 從缺陷中學習C-C++
- 中文版Dreamweaver CS6高手之道
- HTML5+CSS3 Web開發(fā)案例教程(在線實訓版)
- C#:二維三維圖形繪制工程實例寶典
- 移動優(yōu)先與響應式Web設計(2冊)