SlideShare a Scribd company logo
1 of 29
第六堂:
Youtube 播放 APP (1)
柯力中 Jason Ko
Jason的Android 快樂應用程式學習班
課程內容
• Youtube 播放 APP 介紹
• YoutubePlay 的 Layout
• 設定 AndroidManifest.xml
• 測試 YoutubeAPI
• AsyncTask
• ListView 跟 Adapter
Jason的Android 快樂應用程式學習班
Youtube 播放 APP 簡介
Jason的Android 快樂應用程式學習班
Youtube 播放 APP 簡介
• APP 名稱 : YoutubePlay
• 功能:連結並播放 Youtube 影片
• 作法:
透過 YoutubeAPI 取得資料, 顯示
在首頁的 ListView 上, 接著內頁
顯示影片細節。
Jason的Android 快樂應用程式學習班
今天進度
• 學會使用 YoutubeAPI
• 完成影片的列表排列
Jason的Android 快樂應用程式學習班
YoutubePlay 的 Layout
Jason的Android 快樂應用程式學習班
1. 在 activity_main.xml 設置 ListView
Layout 設置
2. 在 res / layout 下新增 item_video_list.xml
Layout 設置
item_video_list.xml
ImageView TextView
TextView TextView
TextView TextView
125dp
110dp
60dp
15dp
15dp
LinearLayout
RelativeLayout
測試 API
Jason的Android 快樂應用程式學習班
1. 新增一個 class:VideoAPI
2. 到下方連結複製並貼上
https://github.com/KosbrotherSchool/Teach_Youtu
bePlayAPP/blob/master/app/src/main/java/com/jas
onko/newyoutubeapp/VideoAPI.java
3. 再新增一個 class: YoutubeVideo
4. 到下方連結複製並貼上
https://github.com/KosbrotherSchool/Teach_Youtu
bePlayAPP/blob/master/app/src/main/java/com/jas
onko/newyoutubeapp/YoutubeVideo.java
設置 VideoAPI
測試 API
Jason的Android 快樂應用程式學習班
取 Videos
出現 Bug!
=> 取網路資料, 不能在 MainThread, 來看看什麼是
MainTread!
MainThread 與 Thread
Jason的Android 快樂應用程式學習班
• MainThread 是老大, 要照顧 UI 畫面, 看不到功勞
的事, 叫 Thread 小弟去做!
• MainThread 又叫 UI Thread
MainThread
老大 Thread
小弟
那個, 你去把事情
做一做
MainThread 與 Thread
Jason的Android 快樂應用程式學習班
MainThread (UI Thread) 負責主畫面
Thread 2
Thread 1
Thread 3
• 可以開同時開很多個 Thread
AsyncTask
Jason的Android 快樂應用程式學習班
AsyncTask
• Android 幫我們準備好了稱職的 Thread 小弟
AsyncTask!
• 有四個 method:onPreExecute,
doInBackground, onProgressUpdate,
onPostExecute
• 在 AsyncTask 的背景程式處理完, 可以在
onPostExecute() 更新 UI 畫面
Jason的Android 快樂應用程式學習班
AsyncTask
• Android 幫我們準備好了稱職的 Thread 小弟
AsyncTask!
Jason的Android 快樂應用程式學習班
AsyncTask 的 LifeCycle
Jason的Android 快樂應用程式學習班
• 要更新資料處理完後的 UI 元件, 要在 onPostExecute() 執行
MainThread 與 AsyncTask
Jason的Android 快樂應用程式學習班
MainThread (UI Thread) 負責主畫面
AsyncTask 2
AsyncTask 1
AsyncTask 2
• 可以開同時開很多個 AsyncTask
AsyncTask
建立元件:
Jason的Android 快樂應用程式學習班
p.s 程式碼有縮減, 請看
http://developer.android.com/reference/android/os/AsyncTask.html
Params Progress Result
使用 AsyncTask
建立新的 AsyncTask 並執行:
Jason的Android 快樂應用程式學習班
簡單版的 AsyncTask
Jason的Android 快樂應用程式學習班
建立 AsyncTask 並執行:
Jason的Android 快樂應用程式學習班
使用簡單版的 AsyncTask
在 AndroidManifest.xml 中加入 Permission
• 在 AndroidManifest.xml 中加入 Internet 的 Permission
ListView 與 Adapter
Jason的Android 快樂應用程式學習班
ListView
1. 用來列表顯示的元件, 一樣要宣告與取得物件
2. 要 setAdapter
Jason的Android 快樂應用程式學習班
Adapter
Jason的Android 快樂應用程式學習班
• Adapter 用來橋接 ListView 與資料, 告訴
ListView 每一格要填入什麼
• BaseAdapter 的主要方法有 getCount(),
getItem(), getView()
• getView() 即返回每一格列表, 所要顯示的資料
與形式
Adapter
Jason的Android 快樂應用程式學習班
• Adapter 用來取資料與產生 View, 告訴
ListView 每一格要顯示什麼
ListView
Adapter
data
View data
完成程式碼
Jason的Android 快樂應用程式學習班
• https://github.com/KosbrotherSchool
/Teach_YoutubePlayAPP_part1

More Related Content

What's hot

Admob and android
Admob and androidAdmob and android
Admob and android力中 柯
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharingGrady Zhuo
 
移动产品设计流程 @吴达鲲
移动产品设计流程 @吴达鲲移动产品设计流程 @吴达鲲
移动产品设计流程 @吴达鲲Darek Wu
 
Cloud radio 閃電秀
Cloud radio 閃電秀Cloud radio 閃電秀
Cloud radio 閃電秀Tom Sun
 
如何自動化測試Android Deeplink
如何自動化測試Android Deeplink如何自動化測試Android Deeplink
如何自動化測試Android DeeplinkWu Wells
 

What's hot (9)

170125 小影實作(初階)
170125 小影實作(初階)170125 小影實作(初階)
170125 小影實作(初階)
 
170718 小影實作(初階)
170718 小影實作(初階)170718 小影實作(初階)
170718 小影實作(初階)
 
170902 小影實作(初階)
170902 小影實作(初階)170902 小影實作(初階)
170902 小影實作(初階)
 
170626 小影實作(初階)
170626 小影實作(初階)170626 小影實作(初階)
170626 小影實作(初階)
 
Admob and android
Admob and androidAdmob and android
Admob and android
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharing
 
移动产品设计流程 @吴达鲲
移动产品设计流程 @吴达鲲移动产品设计流程 @吴达鲲
移动产品设计流程 @吴达鲲
 
Cloud radio 閃電秀
Cloud radio 閃電秀Cloud radio 閃電秀
Cloud radio 閃電秀
 
如何自動化測試Android Deeplink
如何自動化測試Android Deeplink如何自動化測試Android Deeplink
如何自動化測試Android Deeplink
 

Viewers also liked

第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計力中 柯
 
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko力中 柯
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:CollectionBrad Chao
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Brad Chao
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計Brad Chao
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!鍾誠 陳鍾誠
 

Viewers also liked (15)

第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計
 
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念
 
Java8 time
Java8 timeJava8 time
Java8 time
 
Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
沒有 GUI 的 Git
沒有 GUI 的 Git沒有 GUI 的 Git
沒有 GUI 的 Git
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 

第六堂 Youtube 播放 App (1)