
耶~終於完賽了~
終於可以結束每天都兩點以後睡的日子了~
也可以開始訂閱Apple Arcade了~XD
其實大家都說,寫技術文章是為了自己,我也這麼認為
但這個系列賽我捫心自問,的確是很用心寫
也盡量考慮到讀者的心情
不過不管是點閱數或是互動上都很冷清
著實有點灰心呢....
不知道是不是技術深度不足;還是文筆太差
不論如何,算是對自己有個交代,也有學到東西
真是可喜可賀
之後,我還會繼續地在手機跨平台開發的路上繼續前進
下一個目標是RN、再來是Fultter....
為此,我也組了一個LINE群,希望對"跨平台"開發有興趣的小夥伴們可以一起討論(iOS跟安卓已有專群了)
或是只要您是iOS Developer對安卓有問題的,都歡迎在下面留言,我盡量回覆您(如果是專業Android開發者的問題我可能扛不住XD)
最後,
畢竟文章是寫給人看的
如果我的文章有那麼一點點幫助到您
麻煩您點個喜歡/收藏
【這邊】
或隨意留個言
對我來說都是莫大的鼓舞
謝謝
本系列文章受到陳董 - Kotlin連續三十天動手做很大的啟發,在此特別感謝



















規定各種檔案存放的路徑
AS分成Log、Build、Run
斷點才會停
有分類型v,d,i,w,e,分別對應Verbose,Debug,Info,Warn,Error開發者模式
AndroidManifest 跟 Gradle是Android兩個很重要的設定檔,類似xcodeproj裝套件
icon跟Target
類似ViewController的東西沒有NavigationController,所以要切換Activity要透過Intent去call startActivity(類似present)| iOS | Android | 
|---|---|
| VDL | onCreate | 
| WillEnterForeground | onRestart | 
| VWA, DidBecomeActive | onStart | 
| VDA | onResume | 
| VWD, WillResignActive | onPause | 
| VDD, DidEnterBackground | onStop | 
| dealloc | onDestroy | 
要不要new一個新的Activity
自動產生XML
人類看得懂的,也可以自己寫XML,寫的時候可以即時預覽
安排subView的位置,主要這三種:Lesson 08 - ConstraintLayout基礎
類似AutoLayout的東西,介紹基本用法Lesson 09 - ConstraintLayout特色
Chain: 把多個物件串起來,自動分配位置(像stackView),但好用很多gone: 物件不顯示了,而且位置還會被其他元件替補Lesson 10 - TextView + EditText
| Android | iOS | 
|---|---|
| TextView | UILabel | 
| EditText | UITextField | 
跑馬燈跟UITextView自動長高
| Android | iOS | 
|---|---|
| Button | UIButton | 
| Dialog | UIAlertController | 
很爽
Toast,可以顯示訊息給user 
Lesson 12 - ImageView + ImagePicker
| Android | iOS | 
|---|---|
| ImageView | UIImageView | 
| Bitmap | UIImage | 
圖片檔名連一個大寫都不能出現= =,不然就會build不起來scaleType就是以前的UIContentMode
還不知道怎麼解!!!
Lesson 13 - Spinner + DatePickerDialog
| Android | iOS | 
|---|---|
| Spinner | UIPickerView | 
| DatePickerDialog | UIDatePicker | 
Lesson 14 - SeekBar + ProgressBar
| Android | iOS | 
|---|---|
| ProgressBar | UIActivityIndicatorView | 
| SeekBar | UISilder | 
Loading轉圈動畫是用ProgressBarLesson 15 - Buttons = [Radio,Chip,Switch,Toggle,Material]
| Android | iOS | 
|---|---|
| RadioButton | UISegment | 
| Switch | UISWitch | 
| ToggleButton | 無 | 
| Chip | 無 | 
| MaterialButton | UIButton | 
Chip可以做到常見的tag或是Mail收件人功能 
ListView,但不像TableView有回收的機制,後來就出了個RecyclerView
RecyclerView.Adapter來處理三個必做的方法
RecyclerView.ViewHolder負責持有畫面跟更新資料Lesson 17 - BottomNavigationView + Fragment
像TabBarController,但是很像View上面放幾個按鈕然後把subView換掉的感覺可以加在Activity上的東西:FragmentOkHttp套件<uses-permission android:name="android.permission.INTERNET" />,不然會閃退OkHttpClient, Request, Call組成一次網路請求runOnUiThread包起來Gson套件@SerializedName可以跟後端的欄位命名匹配內建一些範本可以參考或修改<uses-permission android:name="android.permission.USE_FINGERPRINT" />
API Key才能用getSystemService(Context.LOCATION_SERVICE)取得locationManagerSharedPreferences(類似UserDefault)Entity(就是Model)、DAO(負責新刪改查)、Database(存資料的地方)Device File Explorer可以導出資料庫NavigationBar的位置
NoActionBar > findviewbyID取得layout上的ActionBar > setSupportActionBar閃退
Activity上的一個viewFirebase Cloud Messaging
不用取得user權限也可收推播不像iOS一定要走APNs,他們也可以不透過FCM,像在中國Google不通,就要用其他的推播服務繼承於BroadcastReceiver
只支援FrameLayout、LinearLayout、RelativeLayout、GridLayout只支援AnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView、AdapterViewFlipper(連子類也不行)RemoteViews類來處理Lesson 28 - 伸縮Banner + 瀑布流 + CardView
CardView: 就是FrameLayout的一種,但是加了一些現在常用的設計,例如圓角/陰影等等StaggeredGridLayoutManager就OK了,超簡單CoordinatorLayout跟CollapsingToolbarLayout即可達成~不用寫code會蓋掉app_name
這個系列實作下來有幾點心得
用拉的可以產生XML很棒
貼心小舉動的,例如變數建議、自動import、行數顯示顏色、自動生code、更強的⌘跳轉不用寫字串很棒
都不寫清楚!!!(好像AS3.5改了?)@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) { //i是什麼鬼?b是什麼鬼?
在括號裡面打逗號就會跳出overloading讓你選總體下來感覺主要精神跟iOS沒有差很多,寫起來體驗也不錯(可能因為我只是學到皮毛吧)
我終於完賽了!恭喜大大完賽,我本身是 Android 起手的,現在自學 iOS,看完大大的文章,覺得你寫的真的很不錯,希望可以出個 iOS 版,雖然板上很多了,但文筆好、容易懂,實在不多見
哇哇!謝謝您的回應
終於不是自嗨了XD
很感謝您的肯定
iOS版的話,暫時沒有計劃
如果您有什麼問題的話
也歡迎提出來,我們可以討論討論~

手機跨平台開發討論群(iOS&Android雙刀、ReactNative、Flutter)
https://line.me/R/ti/g/Cdyg5jOsQ4
感覺的到非常用心在準備
訂閱人數的話...  可能有各式各樣的原因
但是...如果內文有多一些些梗圖  或者蠢話 (遇到的蠢bug)
這樣會讓讀者再更融入  畢竟...  工程師的生活是不怎麼有趣的 
恭喜完賽 
謝謝祝賀與建議~
梗圖部分深有同感
下次參賽會多加一點XD