Android 的入門與初學・實戰篇(一)

Takuma 不上班
8 min readAug 27, 2019

理論是給那些天才用的,像我這種庸才的凡夫俗子、凡骨,只能靠實戰訓練自己。當然在實戰中永久陣亡也是有可能的

實戰,就是要瘋狂!_(꒪ཀ꒪」∠)_

前導

上一篇說了初學的概述概論,所以這篇開始來直接講實戰
其實也是因為目前在公司開始每週稍微講解 Android 如何開發,開始誤人子弟,帶壞大家,所以就順便把使用的材料與內容釋出

那些讀書讀理論就能寫出一手好程式、漂亮的架構、完美不會有問題的 performance,這篇可能不適合你,因為這篇就是 try & error 到自己理解為止的文章(╯‵□′)╯︵┻━┻

所以其實這種做法相對來說可能更加耗費你的時間與精力,這邊請自我掌控好自己比較屬於哪種學習方式,請用最適合自己的學習方式進行,可以的話要以最高效率的方式學習。

Keyword、關鍵字

承接上篇文章,若是你已掌握了關鍵字的學習方法,我想也應該已經不需要看這篇文章了,當然如果這篇文章對你還是有所幫助的話,就請繼續看下去吧。

語言

使用語言就都請轉用 Kotlin 進行,我絕對不會推 Java 的,打死不推,請用 Kotlin 進行開發。

基本知識

希望您至少要能夠擁有一些程式開發的基本知識,包括宣告(declare)、給值(assign)、因為不是手把手地帶著練習所以沒法把這些基本知識在實戰中一同帶給您。

邏輯與畫面

通常程式邏輯,需要運算撰寫各種行為模式的 code 只會寫在

app/src/main/java/com.example.testbalabala

這種路徑下,然後不包含邏輯,單純畫面的資源檔案則會放置於

app/src/main/res
個人比較偏好這種原始排列

另外最上方的 Project 表示此表的排列方式,預設會是 Android,如下圖

以先輩整理過的資料夾顯示,本身資料夾的路徑並未改變,只是顯示上整理過

每個人偏好哪一種並沒有正確的答案,只有最符合自己的方式,所以哪種模式你比較喜歡,就去選用那個就好。

實戰

這篇文章只會講述實戰相關的一些流程與技巧,如果有些需要補充或疑問的再請留言。

Product、Sample、Prototype

所謂的實戰,就是直接將產品、idea 的原型、原案、自己想到的應用直接實作出來,實作過程中就會經歷以下幾個要素

  • 你的 APP 需求與功能分別是什麼
  • UI、畫面的呈現方式
  • UI Flow,實作 app 的流程,以及與使用者的互動行為
  • 資料的呈現、擷取
  • 資料的儲存方式
  • 是否需要使用到網路行為
  • 是否需要 Local 與 Server 個別的 Database
  • 是否用到各種第三方服務
  • 完成以上所有部分後的測試,是否會發生資料消失、UI 未正常呈現等等的問題
  • 開發中是否時常遇到閃退問題

粗略區分的話大概就是以上幾點,通常以上全部組合起來並解決後,就是一個完整的產品、Sample 或是 Prototype。

至於 Google Play 的使用者評價就暫時不在這邊的考慮範圍內,雖然我想大家希望做出來的 APP 可以被許多人使用,但無可避免的你懂,人多嘴雜就是嘴賤,然後動不動就送你一顆星,也不能對使用者說不爽不要用啊之類的,不過我還滿想看看有誰那麼有勇氣去說這句話的,我沒有就是。

所以記得做完 APP 上架後,你的心態要記得調整一下,這就是最後最重要的步驟(先搬到前面來說)

範例、Sample

我知道不是所有人都會有 idea 跟那個機會擁有實作產品或 prototype 的機會,所以在這邊我提供一個練習用的 idea 讓大家自己嘗試看看

Pokemon、寶可夢、神奇寶貝 實作(以下使用 Pokemon 或寶可夢)

這邊提到 Pokemon 的原因是,比較大眾化、很多人都玩過或聽過看過,大致上知道有些什麼要素,比較不需要特別說明相關需求,啊所以如果不懂寶可夢的先去把過去小智ㄓㄤ…的 20 年打不到冠軍的遊歷看完,然後就萌大奶(沒問題)了!

小智 20 年練就的臂力,工程師 20 年你就可以練就……

我們先遵照上面所說的實作過程的幾個步驟

你的 APP 需求與功能分別是什麼

不用太難,簡單的就好

需求:皮卡丘跟水箭龜兩隻在同一個畫面裡互打扣血

UI、畫面的呈現方式

皮卡丘

  • 一隻皮卡丘的圖片
  • 一個皮卡丘名字的文字顯示
  • 皮卡丘的血量文字顯示
  • 皮卡丘的血條顯示
  • 皮卡丘的攻擊按鈕

水箭龜

  • 一隻水箭龜的圖片
  • 一個水箭龜名字的文字顯示
  • 水箭龜的血量文字顯示
  • 水箭龜的血條顯示
  • 水箭龜的攻擊按鈕

UI Flow,實作 app 的流程,以及與使用者的互動行為

  • 點擊皮卡丘的攻擊按鈕,水箭龜會扣血,血量文字與血條都會有所變動
  • 點擊水箭龜的攻擊按鈕,皮卡丘會扣血,血量文字與血條都會有所變動

資料的呈現、擷取

  • 承上,顯示皮卡丘與水箭龜的血量文字與血條
  • 取得目前皮卡丘與水箭龜的血量(其中一方攻擊時對面血量不應該回復)

Lesson 1

到此針對於簡單的範例與描述,我想目前先以以上的目標執行即可,若是希望更加進一步,我想您可以試著做出一個實際的 Pokemon 多個技能與回合制的戰鬥方式。

目前第一個範例先做到這裡即可(絕對不是因為我每週只有一天會在公司內實作這個)

元件

我想在製作時會遇到的另一個問題就是關於 UI 的元件,雖然這部份說去看文件就好,但這應該太折磨新手。

所以這邊列出您在實作中會使用到的元件,然後再去調查他的相關用法即可

而元件這種東西,就是用越多你就懂越多,所以不用急於一時、也不用特別焦慮還有多少元件不會,Android Studio 開啟 layout/***.xml 之後,你就會看到 Design & Text 的 tab 了。

你可以使用 Design 的方式拖曳,也可以用 Text 的方式直接撰寫 UI code,當然 Design 的拖曳會遇上各種特別的問題,這邊暫時不多詳述,因為…問題太多了。

所以很多工程師為了節省時間,其實都是直接自行撰寫 xml,不然光是拉個元件設幾個參數而已,大概就會以小時為計浪費掉這些時間。

小技巧

實作中會發生完全不知道如何下手的情況,這時候如果您宣告的一些元件,像是 TextView,您給的 id 或是 field 命名假定為 textPickachu,您希望設置文字在這個 UI 的 View 上面,您可以試著打出 tex…,如此 Android Studio 這個開發環境就會將包含「tex」相關的元件都列出來,供您選擇您需要的

待您選好後,為了呼叫該元件內部的功能或方法,您可以直接一個點:

textPickachu.text = “皮卡丘”

通常您只要打一個字,Android Studio 的 AutoComplete 機制就會幫助您列出可以用的相關內容,然後您可以直接觀察那些內容的描述,通常就能找出您真正需要的東西。

太棒了,連看文件都不用呢!追 Code 就可以學到東西了!

keyword

這邊還是要再補充 keyword,您會用到相當多的方法,而方法的命名都有其邏輯,像是你要設置一些內容到 UI 上,只要對 UI 的元件打出 .set***,通常就會列出你希望的東西

example

image.setImageResource(R.drawable.ic_launcher)
text.setText("我要成為貓奴王")

如果您希望的是取得某些東西的話

text.getText()
json.getString("pokemon_name")

命名命的好,寫 Code 沒煩惱

Github

關於 sample 程式碼的部分,我都還沒有整理的放在 Github 上了,自己去拿吧

AndroidLesson-Pokemon

然後關於有哪些元件哪些初學的內容可以學習?

我推薦大家可以去看看 Rick Wu 寫的 GiveMePass

之後再找一些時間整理一下一些中文相關學習資源給大家,中國的話就不一定,中國裡面的 Copy Paste 太過氾濫,對的資訊裡面都參雜錯的內容,所以會稍微篩選一下。

Lesson2

下一個階段…或許大家都自學學會了吧?應該不需要講解了吧?

下一個階段大概等週五講完實作完後會再釋出吧?有空的話?

--

--