1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [講座] [Android應用程序(現在糖豆!)] 2 00:00:02,610 --> 00:00:04,210 [約旦Jozwiak] [哈佛大學] 3 00:00:04,210 --> 00:00:06,780 [這是CS50。] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> 大家好,歡迎到Android應用程序(現在糖豆)研討會。 5 00:00:11,600 --> 00:00:14,530 這就是所謂的現在與糖豆,當然,因為 6 00:00:14,530 --> 00:00:17,310 最新版本的操作系統被稱為果凍豆。 7 00:00:17,310 --> 00:00:22,950 當我談到去年的Andr​​oid這樣做基本上是相同的研討會 8 00:00:22,950 --> 00:00:29,150 我提出的設計圖案和風格的選擇,薑餅, 9 00:00:29,150 --> 00:00:31,250 儘管冰淇淋三明治已經出來的時候, 10 00:00:31,250 --> 00:00:33,680 這是後話,我們會談論前進一點點。 11 00:00:33,680 --> 00:00:35,720 Android的,當然,有一些碎片問題, 12 00:00:35,720 --> 00:00:40,240 所以最新的谷歌操作系統通常是 13 00:00:40,240 --> 00:00:44,710 不是真的要成為常見的用戶之間可能高達一年,不幸的。 14 00:00:44,710 --> 00:00:49,960 >> 但無視這一點,我們會談論很多原因, 15 00:00:49,960 --> 00:00:53,000 Android是遠遠優於iOS的。 16 00:00:53,000 --> 00:00:56,410 好吧,我們來談談Android與iOS的, 17 00:00:56,410 --> 00:00:59,770 一些設計範例,您將如何設立只是一個幻燈片, 18 00:00:59,770 --> 00:01:03,410 大的區別,我只是想,這與去年的 19 00:01:03,410 --> 00:01:06,860 通過一些概念性的東西,使用變焦 20 00:01:06,860 --> 00:01:09,950 操作系統,然後進入一個非常基本的例子。 21 00:01:09,950 --> 00:01:13,730 事實上,就在建立你的第一個應用程序,谷歌描述的例子, 22 00:01:13,730 --> 00:01:17,070 通過它,我們會去一起,只是描述。 23 00:01:17,070 --> 00:01:22,100 >> 我知道你們許多人只用C語言編寫的,所以Java已經 24 00:01:22,100 --> 00:01:27,220 不同的角度,這樣你會得到你的腳濕 25 00:01:27,220 --> 00:01:31,540 和感覺舒服些希望。 26 00:01:31,540 --> 00:01:35,330 一個快速的總結,Android與iOS的。 27 00:01:35,330 --> 00:01:39,200 在Android中,有這種一次性的開發費用為25美元, 28 00:01:39,200 --> 00:01:42,390 沒有這個每年100美元的事情。 29 00:01:42,390 --> 00:01:45,440 有沒有限制,這意味著,如果我想提交一個應用程序, 30 00:01:45,440 --> 00:01:51,560 我剛提交它,就像是有適用於iOS有沒有審批流程。 31 00:01:51,560 --> 00:01:53,890 您可以使用Eclipse與Java開發, 32 00:01:53,890 --> 00:01:57,090 它是跨平台的,所以它並不重要,如果你有一個蘋果, 33 00:01:57,090 --> 00:01:59,600 Windows,或者一些Linux機器。 34 00:01:59,600 --> 00:02:03,730 當然,你必須與iOS在Mac上使用XCode, 35 00:02:03,730 --> 00:02:06,930 Android是越來越多的人使用, 36 00:02:06,930 --> 00:02:11,580 所以,如果你希望你的應用程序有某種形式的知名度,或者 37 00:02:11,580 --> 00:02:14,110 從廣告,賺小錢 38 00:02:14,110 --> 00:02:17,450 你可能更容易從Android獲益。 39 00:02:17,450 --> 00:02:20,630 >> 還有一件事,一直被稱為關於Android 40 00:02:20,630 --> 00:02:25,100 是極端的定制量,而以自己的方式是非常固定的iOS 41 00:02:25,100 --> 00:02:29,380 這樣他們可以維護每一個小環節的安全性和控制權 42 00:02:29,380 --> 00:02:34,180 在其操作系統和單個應用程序的設計。 43 00:02:34,180 --> 00:02:40,180 Android是非常自由的形式,而且有那麼多的可能性。 44 00:02:40,180 --> 00:02:42,530 好吧,有些設計範例。 45 00:02:42,530 --> 00:02:49,600 請注意,這裡就像iOS的平板電腦和iPhone和iPod touch 46 00:02:49,600 --> 00:02:53,840 如果你想支持,他們有支持,比方說,有十幾設備 47 00:02:53,840 --> 00:02:55,450 歷史的東西為好。 48 00:02:55,450 --> 00:02:58,410 有了Android,你的設備必須支持數百個, 49 00:02:58,410 --> 00:03:01,240 所以有一些事情,谷歌一直試圖實現 50 00:03:01,240 --> 00:03:04,970 使用戶體驗到一個更加一致的一點, 51 00:03:04,970 --> 00:03:08,560 但我們還將討論如何這意味著有碎片問題 52 00:03:08,560 --> 00:03:11,700 你不斷地有要注意的支持。 53 00:03:11,700 --> 00:03:16,140 碎片意味著有許多不同的操作系統, 54 00:03:16,140 --> 00:03:20,330 許多不同的手機,不同的硬件上運行Android同時, 55 00:03:20,330 --> 00:03:29,680 所以這個圖可以追溯到約6個月。 56 00:03:29,680 --> 00:03:36,460 是啊,6個月,你可以看到如何在最黑暗的樂隊 57 00:03:36,460 --> 00:03:39,330 在底部是糖豆,在夏季出來, 58 00:03:39,330 --> 00:03:42,970 你可以看到現在大概2%左右的手機。 59 00:03:42,970 --> 00:03:45,520 >> 冰淇淋三明治出來一年多前, 60 00:03:45,520 --> 00:03:47,770 一季度的手機。 61 00:03:47,770 --> 00:03:53,910 仍然有很多手機從幾年前正在使用的操作系統版本。 62 00:03:53,910 --> 00:03:57,820 有一件事,谷歌一直試圖做才能讓用戶體驗 63 00:03:57,820 --> 00:04:01,400 更一致的應用程序有很多蜂窩,開始 64 00:04:01,400 --> 00:04:04,320 這是平板版本,冰淇淋三明治和果凍豆, 65 00:04:04,320 --> 00:04:06,750 他們真的想強調這個動作欄, 66 00:04:06,750 --> 00:04:10,430 這是你可以在上面看到這裡, 67 00:04:10,430 --> 00:04:14,730 這裡的一切權利,包括這個小設置“按鈕。 68 00:04:14,730 --> 00:04:16,079 它的設計選擇。 69 00:04:16,079 --> 00:04:18,000 現在,每當你看到三個點,這意味著在此, 70 00:04:18,000 --> 00:04:21,880 而且會有一個下拉菜單,其中有某種設置。 71 00:04:21,880 --> 00:04:28,900 這只能說明,因為我點擊這個按鈕。 72 00:04:28,900 --> 00:04:32,040 這是,他們正試圖用一點點,使應用程序更加一致 73 00:04:32,040 --> 00:04:39,210 一刀切的,所以用戶有一個統一的體驗更好的感覺。 74 00:04:39,210 --> 00:04:42,640 >> 好吧,如果你還沒有這樣做已經或者如果你在家裡看 75 00:04:42,640 --> 00:04:50,210 那麼你可以按照以下步驟設置你的編碼環境。 76 00:04:50,210 --> 00:04:52,630 這將涉及網站。 77 00:04:52,630 --> 00:04:56,260 您可以在Google安裝Android SDK 78 00:04:56,260 --> 00:04:59,130 並遵循一些描述。 79 00:04:59,130 --> 00:05:01,310 他們會告訴你一切。 80 00:05:01,310 --> 00:05:05,160 他們有你安裝SDK,下載Eclipse Classic的版本, 81 00:05:05,160 --> 00:05:07,450 當然,即使我們在Java編碼。 82 00:05:07,450 --> 00:05:12,190 他們建議這一項,那麼這個ADT,Android開發工具, 83 00:05:12,190 --> 00:05:17,300 是一個插件安裝到Eclipse中,它允許你 84 00:05:17,300 --> 00:05:20,550 在Eclipse有一個更精簡的體驗與Android。 85 00:05:20,550 --> 00:05:24,070 它會給你一些圖形用戶界面 86 00:05:24,070 --> 00:05:29,610 設計的意見,它會給你更多的支持 87 00:05:29,610 --> 00:05:34,840 並有能力推出與仿真器和所有諸如此類的事情。 88 00:05:34,840 --> 00:05:36,090 應用程序框架。 89 00:05:36,090 --> 00:05:41,590 >> 我想談談如何在Android項目結構, 90 00:05:41,590 --> 00:05:44,830 然後我們將進入一個簡單的例子,希望 91 00:05:44,830 --> 00:05:48,820 你可以問的問題在任何時候,感覺很舒服,它的結束。 92 00:05:48,820 --> 00:05:50,090 我們有一些行話。 93 00:05:50,090 --> 00:05:55,330 當你啟動一個應用程序時,您看到的屏幕就像是一個活動。 94 00:05:55,330 --> 00:05:57,840 整個體驗活動本身, 95 00:05:57,840 --> 00:06:00,790 所以你可以把它看作是一個屏幕或視圖, 96 00:06:00,790 --> 00:06:04,540 但它實際上是它的源代碼方面。 97 00:06:04,540 --> 00:06:12,680 我們仍然調用實際的接口視圖。 98 00:06:12,680 --> 00:06:17,230 它有點像我們如何在習題集7控制器和視圖。 99 00:06:17,230 --> 00:06:20,690 的活性或多或少控制器, 100 00:06:20,690 --> 00:06:23,360 的觀點是我們在做什麼的XML 101 00:06:23,360 --> 00:06:25,260 與該活動相關聯。 102 00:06:25,260 --> 00:06:29,340 片段是東西的實施冰淇淋三明治前進。 103 00:06:29,340 --> 00:06:36,380 這只是一個想法,採取部分視圖或活動 104 00:06:36,380 --> 00:06:39,990 這樣我們就可以把它們分成不同的領域 105 00:06:39,990 --> 00:06:45,030 這許多不同的設備,使我們的代碼更可用 106 00:06:45,030 --> 00:06:51,890 我們要支持,它只是一個嘗試的方式 107 00:06:51,890 --> 00:06:54,290 分解出更多的代碼。 108 00:06:54,290 --> 00:07:01,090 服務播放音樂或導航方向可能的背景之類的東西。 109 00:07:01,090 --> 00:07:05,640 內容提供商,這些都是在操作系統內的API 110 00:07:05,640 --> 00:07:09,070 允許您訪問共享數據,如聯繫人信息, 111 00:07:09,070 --> 00:07:12,790 然後意圖是什麼時,我們將​​使用我們要啟動 112 00:07:12,790 --> 00:07:17,210 一個新的活動,從我們目前的活動。 113 00:07:17,210 --> 00:07:20,980 >> 您好Android的,這是怎麼回事,是一個項目,我們將談論。 114 00:07:20,980 --> 00:07:25,410 實際上,我會為你做它,那麼我們就做了一件事情,在這裡我們點擊一個按鈕 115 00:07:25,410 --> 00:07:27,650 一些文字,並推出一個新的活動。 116 00:07:27,650 --> 00:07:30,110 非常簡單,但我想通過 117 00:07:30,110 --> 00:07:34,480 什麼將進入這樣一個項目。 118 00:07:34,480 --> 00:07:39,260 當你做出新的項目,你會看到在Eclipse 119 00:07:39,260 --> 00:07:41,900 這個項目名為Hello的Andr​​oid。 120 00:07:41,900 --> 00:07:43,470 然後有一大堆的文件夾,在這裡。 121 00:07:43,470 --> 00:07:46,760 你真正關心的是源文件夾, 122 00:07:46,760 --> 00:07:54,540 資源文件夾,水庫,以及一定程度上的libs文件夾庫。 123 00:07:54,540 --> 00:08:00,070 只是讓我們在同一頁上, 124 00:08:00,070 --> 00:08:03,240 如果你要創建一個新的項目, 125 00:08:03,240 --> 00:08:08,270 你可以做到這一點就在這裡,所以如果我想叫它HelloAndroid 126 00:08:08,270 --> 00:08:11,100 然後,它會自動的信息為我們做了一大堆。 127 00:08:11,100 --> 00:08:14,110 包的名稱應該是一個唯一的標識符 128 00:08:14,110 --> 00:08:16,710 通常會與網站關聯,如果你有一個。 129 00:08:16,710 --> 00:08:24,430 >> 例如,我會打電話這個net.cs50.helloandroid。 130 00:08:24,430 --> 00:08:30,070 我已經有這個項目一次。 131 00:08:30,070 --> 00:08:40,059 好吧,對不起。讓我們叫它HelloCS50。 132 00:08:40,059 --> 00:08:42,929 然後它會問喜歡什麼樣的圖標,我們想的事情。 133 00:08:42,929 --> 00:08:48,840 這是因為Android開發工具界面, 134 00:08:48,840 --> 00:08:53,350 我們加入到Eclipse的插件,所以我們可以選擇喜歡的東西 135 00:08:53,350 --> 00:08:58,320 什麼樣的圖標,我們想,如果我們想要的話,會去到那個深度。 136 00:08:58,320 --> 00:09:04,360 但到最後,才使這個項目, 137 00:09:04,360 --> 00:09:07,040 一切都顯示在這裡。 138 00:09:07,040 --> 00:09:10,030 正如我另一個屏幕上顯示, 139 00:09:10,030 --> 00:09:14,070 大家都有源文件夾,我將談論什麼都很快,這意味著, 140 00:09:14,070 --> 00:09:19,090 但你可以看到,它立刻把我們帶到的HelloCS50畫面。 141 00:09:19,090 --> 00:09:24,690 在這裡有一些按鈕添加文本和文本字段佈局。 142 00:09:24,690 --> 00:09:28,910 這有點像XCode的,但不幸的是沒有相當精簡。 143 00:09:28,910 --> 00:09:37,790 但剪輯將成為您的朋友和ADT尤其是這樣做的。 144 00:09:37,790 --> 00:09:40,920 >> 好吧,源文件夾是 145 00:09:40,920 --> 00:09:43,820 持有的Java文件,這其實是你的程序的啟動。 146 00:09:43,820 --> 00:09:45,990 這基本上就像控制器。 147 00:09:45,990 --> 00:09:49,020 資源文件夾或水庫是在這裡,我們將保持屏幕佈局, 148 00:09:49,020 --> 00:09:54,110 圖像,聲音,文字,動畫和一切,很明顯,庫庫。 149 00:09:54,110 --> 00:10:01,700 和清單,這是Android系統知道的方式, 150 00:10:01,700 --> 00:10:03,130 如何與您的應用程序進行交互。 151 00:10:03,130 --> 00:10:07,980 它告訴它有關權限和什麼樣的活動將實際運行。 152 00:10:07,980 --> 00:10:12,350 這一切都需要運行你的應用程序的基本信息。 153 00:10:12,350 --> 00:10:17,990 源文件夾,如果我們展開它,你可以看到這裡。 154 00:10:17,990 --> 00:10:23,920 一個例子,代碼會看這是默認的代碼。 155 00:10:23,920 --> 00:10:27,930 我們把它稱為,MainActivity。 156 00:10:27,930 --> 00:10:33,230 默認情況下,我們得到的倚仗,這就是所謂的這項活動負載時,這是一個函數, 157 00:10:33,230 --> 00:10:37,150 所以你想調用的onCreate(savedInstanceState),的。 158 00:10:37,150 --> 00:10:40,440 這將恢復信息的任何位 159 00:10:40,440 --> 00:10:44,910 情況下,應用程序被暫停。 160 00:10:44,910 --> 00:10:48,790 >> 整個活動有一個生命週期的圖表,你可以看看 161 00:10:48,790 --> 00:10:50,380 當你得到一點點更深入, 162 00:10:50,380 --> 00:10:56,210 但最重要的一行代碼的setContentView有這個功能 163 00:10:56,210 --> 00:11:00,290 這將加載資源文件的佈局。 164 00:11:00,290 --> 00:11:03,590 這裡倚仗基本上是做什麼它說 165 00:11:03,590 --> 00:11:07,010 當我創建這個活動,我想加載此佈局。 166 00:11:07,010 --> 00:11:12,030 我們會談論什麼,佈局是在第二。 167 00:11:12,030 --> 00:11:16,230 如果我們要推出,這裡看起來酷似, 168 00:11:16,230 --> 00:11:22,880 默認情況下,因為我們已經這樣做了Eclipse和ADT我們這樣做是為了 169 00:11:22,880 --> 00:11:28,210 這是為我們創造的所有樣板代碼, 170 00:11:28,210 --> 00:11:34,630 我們可以將改變,因為我們喜歡的東西。 171 00:11:34,630 --> 00:11:38,190 資源文件夾,就像我說的,這是我們持有的所有佈局, 172 00:11:38,190 --> 00:11:41,150 可繪製任何形式的圖像 173 00:11:41,150 --> 00:11:46,360 他們是所謂的可繪製,然後聲音文件,菜單。 174 00:11:46,360 --> 00:11:51,170 這是一種XML在一個很好的排序方式了一大堆。 175 00:11:51,170 --> 00:11:58,030 正如你可以看到,有華電國際,LDPI MDPI和xhdpi文件夾的可繪製。 176 00:11:58,030 --> 00:12:02,220 這些不同的屏幕密度,如此高密度每英寸的像素, 177 00:12:02,220 --> 00:12:05,710 低密度,中密度,超高密度。 178 00:12:05,710 --> 00:12:08,900 >> 再次,這是我們可以支持所有這些不同的設備, 179 00:12:08,900 --> 00:12:15,100 理想情況下,你將不得不為每個不同的分辨率不同的圖像。 180 00:12:15,100 --> 00:12:20,740 佈局是我們包括所有不同的佈局將被用來在不同的活動中。 181 00:12:20,740 --> 00:12:24,150 他們還可能包括片段的佈局, 182 00:12:24,150 --> 00:12:26,670 這意味著基本部分活動。 183 00:12:26,670 --> 00:12:29,610 如果你想要做一些很酷的東西一樣,只要你轉動手機 184 00:12:29,610 --> 00:12:33,900 你想讓它有一個不同的佈局,為不同的文件夾,你可以做佈局景觀, 185 00:12:33,900 --> 00:12:39,000 和Android會自動的資源文件夾內有一大堆這些規則, 186 00:12:39,000 --> 00:12:44,690 所以它會知道來看看目前的手機設置的基礎上的不同的文件夾, 187 00:12:44,690 --> 00:12:46,740 你使用什麼樣的硬件。 188 00:12:46,740 --> 00:12:52,350 同樣,這個值-V11在這裡和值-V14 189 00:12:52,350 --> 00:12:55,460 默認值文件夾這是為 190 00:12:55,460 --> 00:13:01,730 好了,本身的值,這將是在所有版本的操作系統的默認值。 191 00:13:01,730 --> 00:13:06,390 另一方面,卷11和卷14的通訊與蜂窩 192 00:13:06,390 --> 00:13:08,780 冰淇淋三明治。 193 00:13:08,780 --> 00:13:12,800 同樣,這些方式,在這些文件夾是不同的字符串 194 00:13:12,800 --> 00:13:17,550 和風格,所以你可以自定義您的應用程序的外觀 195 00:13:17,550 --> 00:13:22,660 或潛在的甚至是它的功能,雖然這很可能是一個壞主意, 196 00:13:22,660 --> 00:13:25,890 基於版本的操作系統。 197 00:13:25,890 --> 00:13:28,760 >> 和我談起這一切都在這裡。 198 00:13:28,760 --> 00:13:35,870 同樣,繪製,原材料,佈局,價值觀。 199 00:13:35,870 --> 00:13:41,380 默認值,如果我們進入您好Android或你好CS50現在 200 00:13:41,380 --> 00:13:43,310 它看起來就像這。 201 00:13:43,310 --> 00:13:45,800 它會說你好世界。 202 00:13:45,800 --> 00:13:58,430 正如你可以看到這裡與Android文本 203 00:13:58,430 --> 00:14:04,420 這個文本視圖的文本,這基本上只是一個標籤, 204 00:14:04,420 --> 00:14:06,900 就是我們將調用它的iOS。 205 00:14:06,900 --> 00:14:11,580 它有這個有趣的符號@串/的hello_world。 206 00:14:11,580 --> 00:14:16,200 是這樣的話,我們可以,我們嘗試提取的所有字符串, 207 00:14:16,200 --> 00:14:19,740 到一個單獨的文件夾中的所有硬編碼字符串在Android, 208 00:14:19,740 --> 00:14:23,610 發生在values​​.strings。 209 00:14:23,610 --> 00:14:29,300 如果我們看一下這裡,我們可以看到,我們有一個硬編碼的字符串保存在這裡 210 00:14:29,300 --> 00:14:33,910 你好世界,它被稱為“世界,你好,這是樣的 211 00:14:33,910 --> 00:14:39,230 在許多平台上常見的設計決定您要到 212 00:14:39,230 --> 00:14:41,780 字符串的事情,我們希望能夠改變可能是那種。 213 00:14:41,780 --> 00:14:48,050 我們不希望我們的XML控制F在我們的源代碼文件,。 214 00:14:48,050 --> 00:14:50,760 我們希望能夠改變這種每當我們得到了機會。 215 00:14:50,760 --> 00:14:53,640 >> 此XML文件的strings.xml,是一種解壓方式 216 00:14:53,640 --> 00:14:56,710 硬編碼字符串,否則將在我們的佈局資源 217 00:14:56,710 --> 00:15:03,530 或者在我們的源代碼。 218 00:15:03,530 --> 00:15:08,190 該清單是我們保持這個重要的信息有關的應用程序。 219 00:15:08,190 --> 00:15:11,050 它包括包名。這是一個獨特的標識符。 220 00:15:11,050 --> 00:15:16,020 在App Store的iOS應用程序的名稱不同 221 00:15:16,020 --> 00:15:19,980 不必是唯一的,事實上,你可以在你的應用程序的名稱更改 222 00:15:19,980 --> 00:15:23,570 您提交後,所以如果我開始了與“憤怒的小鳥” 223 00:15:23,570 --> 00:15:26,840 然後我進行更新,我不想發布一個新版本 224 00:15:26,840 --> 00:15:34,230 我想我可以把它稱為“憤怒的小鳥”2,而我在同一個發行週期。 225 00:15:34,230 --> 00:15:36,780 這只是顯示更新。 226 00:15:36,780 --> 00:15:39,790 唯一的東西,都必須是唯一的,這是包名, 227 00:15:39,790 --> 00:15:41,280 沒有多少人會看到。 228 00:15:41,280 --> 00:15:44,680 那麼,你只能看到,如果你正在尋找的源代碼或者如果有某種錯誤。 229 00:15:44,680 --> 00:15:47,580 這些組件包括的活動,所以我們必須聲明 230 00:15:47,580 --> 00:15:49,070 我們使用任何形式的活動。 231 00:15:49,070 --> 00:15:53,430 這是一個權限之類的事情。 232 00:15:53,460 --> 00:15:58,150 >> 由於Android沒有這種嚴格的申請程序 233 00:15:58,150 --> 00:16:02,210 提交的應用程序,而不是他們只是盡一切基於權限 234 00:16:02,210 --> 00:16:04,300 並宣布在清單中的東西。 235 00:16:04,300 --> 00:16:06,380 SDK版本也很重要。 236 00:16:06,380 --> 00:16:10,330 我們可以設置使用SDK的最低版本的東西。 237 00:16:10,330 --> 00:16:16,010 很顯然,你要創建的代碼 238 00:16:16,010 --> 00:16:18,570 和設計新的操作系統。 239 00:16:18,570 --> 00:16:20,840 也許不是最新的,也許不是糖豆。 240 00:16:20,840 --> 00:16:23,610 也許你想設計主要用於冰淇淋三明治, 241 00:16:23,610 --> 00:16:27,120 雖然他們是幾乎相同的設計決策 242 00:16:27,120 --> 00:16:30,550 實際庫和API。 243 00:16:30,550 --> 00:16:36,250 但是,而不是讓人們 244 00:16:36,250 --> 00:16:40,050 原生Android版本類似甜甜圈回來的路上時, 245 00:16:40,050 --> 00:16:43,420 還有誰碰巧使用,嘗試下載您的應用程序,然後說 246 00:16:43,420 --> 00:16:46,160 這是行不通的,我的手機上,你可以設置的最低版本 247 00:16:46,160 --> 00:16:48,620 是薑餅或冰淇淋三明治 248 00:16:48,620 --> 00:16:53,300 或任何你覺得舒服的一起提交的。 249 00:16:53,300 --> 00:16:57,170 這是一個例子的清單。我們可以看看在實際中位。 250 00:16:57,170 --> 00:17:00,900 >> 好吧,我們就前進的演示。 251 00:17:00,900 --> 00:17:08,900 此為演示,如果谷歌Android建立你的第一個應用程序或類似的東西。 252 00:17:08,900 --> 00:17:12,089 我們將通過在那裡的一切是怎麼回事, 253 00:17:12,089 --> 00:17:17,690 對不起,只是一個參考,誰知道這裡Java在任何程度上的? 254 00:17:17,690 --> 00:17:28,310 好吧,所以Java走出CS50對於大多數人來說是新的編碼語言。 255 00:17:28,310 --> 00:17:31,850 簡單地說,走一遍這裡說什麼, 256 00:17:31,850 --> 00:17:35,580 我們想要做的是什麼,而不是調整這個Hello World應用程序 257 00:17:35,580 --> 00:17:38,620 它是所有它啟動,它說,“世界,你好 258 00:17:38,620 --> 00:17:43,580 和它說你好CS50在頂部,因為這是活動名稱 259 00:17:43,580 --> 00:17:47,190 我們要試圖使一個文本字段和一個按鈕 260 00:17:47,190 --> 00:17:50,680 這樣,當我們按下此按鈕,將採取文字 261 00:17:50,680 --> 00:17:53,660 從文本字段,並推出一個新的活動,它會說 262 00:17:53,660 --> 00:17:58,380 無論該文本在活動中說,這是比較簡單的。 263 00:17:58,380 --> 00:18:00,650 這是不是很有趣。你不想要,釋放任何這樣的應用程序。 264 00:18:00,650 --> 00:18:03,880 但它演示了一些重要的設計的東西。 265 00:18:03,880 --> 00:18:07,030 >> 我們將不得不與清單,佈局文件, 266 00:18:07,030 --> 00:18:12,440 的源代碼,你可以看到如何啟動一個活動,從另一個。 267 00:18:19,740 --> 00:18:23,060 我們將開始與我們的第一個活動的佈局, 268 00:18:23,060 --> 00:18:27,320 我知道這是一種小的, 269 00:18:27,320 --> 00:18:32,660 但正如你可以看到,現在,所有這是我們的標誌,我們創建, 270 00:18:32,660 --> 00:18:36,310 活動名稱,和它說你好世界的中心。 271 00:18:36,310 --> 00:18:40,400 相反,我首先要使它成為一個線性佈局, 272 00:18:40,400 --> 00:18:42,350 相對佈局,而這些所有的東西 273 00:18:42,350 --> 00:18:45,870 你可以看看值得在一些點在佈局方面。 274 00:18:45,870 --> 00:18:47,310 這是一個很像HTML。 275 00:18:47,310 --> 00:18:52,640 我們說,這不是真的值得了解的方面的綱領性意義, 276 00:18:52,640 --> 00:18:55,840 但也有許多不同的佈局,你可以控制, 277 00:18:55,840 --> 00:18:57,970 它就像CSS款式。 278 00:18:57,970 --> 00:19:01,590 >> 有很多事情只是在這裡的美學, 279 00:19:01,590 --> 00:19:08,930 是啊,這是值得學習的,但它的諸如此類的事情,你應該看看 280 00:19:08,930 --> 00:19:11,810 你去,你覺得你需要一些新的東西。 281 00:19:11,810 --> 00:19:17,030 所以我可以利用的一些ADT工具,至少在這裡,開始了與。 282 00:19:17,030 --> 00:19:21,930 我會做出一個文本字段,我會讓一個按鈕。 283 00:19:21,930 --> 00:19:24,100 把他們的權利,彼此相鄰的。 284 00:19:24,100 --> 00:19:28,200 他們已經適當地調整。 285 00:19:28,200 --> 00:19:31,320 我們很抱歉,再次回來線性佈局和相對佈局之間的差異, 286 00:19:31,320 --> 00:19:34,830 線性佈局提供了一些功能 287 00:19:34,830 --> 00:19:38,720 在填充空間並確保 288 00:19:38,720 --> 00:19:42,790 我們的位置水平或垂直的事情。 289 00:19:42,790 --> 00:19:46,130 線性佈局和相對佈局的最大區別 290 00:19:46,130 --> 00:19:50,250 是佈局相對位置的一切相對於其他意見, 291 00:19:50,250 --> 00:19:52,630 它的好處是,它需要較少的時間來繪製 292 00:19:52,630 --> 00:19:56,120 因為作業系統的所有代碼和說,這正好 293 00:19:56,120 --> 00:19:58,270 相對於此,在這裡。 294 00:19:58,270 --> 00:20:03,170 這意味著它使較少的測量,比一大堆的嵌套的線性佈局, 295 00:20:03,170 --> 00:20:06,840 這是我必須做的,如果我想的事情去垂直這裡。 296 00:20:06,840 --> 00:20:10,510 >> 我已經有一些事情水平,所以我需要一個不同的線性佈局 297 00:20:10,510 --> 00:20:14,560 嵌套它們垂直,但如果我做一個相對的佈局,我可以說 298 00:20:14,560 --> 00:20:18,140 保持這個到左側,右側和下面這些東西。 299 00:20:18,140 --> 00:20:21,850 但是,因為我希望他們能填權現在我打算使用線性佈局, 300 00:20:21,850 --> 00:20:24,510 你可以看到它已經為我們做了很多這些東西。 301 00:20:24,510 --> 00:20:28,890 所有視圖需要有一個屬性的寬度和高度, 302 00:20:28,890 --> 00:20:33,410 發生這種情況的權重為1,這有一個權重為1的 303 00:20:33,410 --> 00:20:36,050 所以,它充滿了整個空間。 304 00:20:36,050 --> 00:20:38,460 但是,寬度和高度是最重要的。 305 00:20:38,460 --> 00:20:45,880 此ID字段在這裡並不重要,在實際的佈局 306 00:20:45,880 --> 00:20:49,060 除非我們使用相對佈局和說,大家可以參考 307 00:20:49,060 --> 00:20:52,990 一種觀點認為參考到另一個位置。 308 00:20:52,990 --> 00:20:56,170 如果我們有一個相對佈局,我們可以說,低於這個位置 309 00:20:56,170 --> 00:20:59,390 或高於這個ID,但這個ID將是重要的 310 00:20:59,390 --> 00:21:01,660 當我們在我們的代碼中使用它,因為大家可以參考一下 311 00:21:01,660 --> 00:21:05,610 這些個人的意見這種方式。 312 00:21:05,610 --> 00:21:10,350 >> 然後你就可以看到標記requestFocus,這是一些你可能看到的pset 7。 313 00:21:10,350 --> 00:21:15,370 有一個自動對焦標記或東西沿著這些線路的領域之一。 314 00:21:15,370 --> 00:21:22,100 還有一件事,當然,我們可以做的,就像在HTML中, 315 00:21:22,100 --> 00:21:25,660 通知關於ADT的好東西之一是,它可以自動在這裡。 316 00:21:25,660 --> 00:21:29,930 也許不是很好的,因為它沒有在XCode,但它仍然 317 00:21:29,930 --> 00:21:32,860 我們可以說提示,然後給它一些字符串排序 318 00:21:32,860 --> 00:21:37,070 喜歡寫一條消息, 319 00:21:37,070 --> 00:21:41,300 如果我給它的時刻,也請注意,我在這裡得到一點點的錯誤 320 00:21:41,300 --> 00:21:44,610 說,我們應該使用一個字符串資源, 321 00:21:44,610 --> 00:21:48,820 所以如果我讓它做一些對我的辛勤工作 322 00:21:48,820 --> 00:21:57,320 我可以選擇這個字符串,做折射Android和提取物的Andr​​oid串。 323 00:21:57,320 --> 00:22:00,570 它可以給我這個名字,寫一個消息, 324 00:22:00,570 --> 00:22:04,180 什麼,它現在是沒有取代硬編碼字符串 325 00:22:04,180 --> 00:22:07,980 與參考字符串的XML文件中的字符串, 326 00:22:07,980 --> 00:22:10,200 這意味著,現在這是在這裡。 327 00:22:10,200 --> 00:22:15,560 >> 我知道,在這一點上似乎有點瑣碎,像額外的工作, 328 00:22:15,560 --> 00:22:17,840 但是當你有一大堆的事情,一大堆的字符串, 329 00:22:17,840 --> 00:22:20,750 這是非常重要的,特別是對於本地化 330 00:22:20,750 --> 00:22:26,920 因為正如我前面提到的,Android是全球使用的操作系統 331 00:22:26,920 --> 00:22:35,950 你可以簡單地做價值觀EN或值SP 332 00:22:35,950 --> 00:22:44,320 或英語或西班牙語或其他語言的東西。 333 00:22:44,320 --> 00:22:50,210 然後,你可能還沒有過這樣的經歷還 334 00:22:50,210 --> 00:22:53,030 因為我們並沒有做太多的JavaScript網頁編程方面, 335 00:22:53,030 --> 00:22:56,850 但我們也可以做這一領域的onClick按鈕, 336 00:22:56,850 --> 00:23:02,350 這是一個引用的方式在我們的佈局 337 00:23:02,350 --> 00:23:06,570 我們希望在我們的源代碼一定要調用的函數。 338 00:23:06,570 --> 00:23:09,420 我要調用的SendMessage, 339 00:23:09,420 --> 00:23:13,390 為了使這項工作,這意味著在這裡的主要活動 340 00:23:13,390 --> 00:23:19,180 我將不得不創建一個函數是公共 341 00:23:19,180 --> 00:23:22,250 ,這樣它可以被訪問由佈局。 342 00:23:22,250 --> 00:23:25,930 它是無效的,因為你只是不希望它返回什麼。 343 00:23:25,930 --> 00:23:37,760 我們叫它的sendMessage,它需要一個視圖, 344 00:23:37,760 --> 00:23:43,690 這是一個樣的背景下,我們可以鞏固這個方法 345 00:23:43,690 --> 00:23:47,160 個別的觀點,當我們運行它。 346 00:23:47,160 --> 00:23:50,090 >> 我不知道你是否注意到,你不會注意到, 347 00:23:50,090 --> 00:24:02,370 但在這一點上就在這裡 348 00:24:02,370 --> 00:24:06,930 這種觀點是一種尚未被列入, 349 00:24:06,930 --> 00:24:10,630 當然,大家都知道從CS50不包括的類型。 350 00:24:10,630 --> 00:24:13,120 關於IDE的Eclipse這樣美好的事情是, 351 00:24:13,120 --> 00:24:17,520 如果你忘了,包括類型,它會用小的紅色波浪下劃線 352 00:24:17,520 --> 00:24:19,680 然後給你選擇導入的看法。 353 00:24:19,680 --> 00:24:23,130 這樣做,是一個快速的方法控制移位O,以及將導入 354 00:24:23,130 --> 00:24:27,070 它需要的所有文件。 355 00:24:27,070 --> 00:24:33,670 現在,我們有這個函數SendMessage, 356 00:24:33,670 --> 00:24:46,560 這是怎麼回事MainActivity消息發送到一個新的活動, 357 00:24:46,560 --> 00:24:55,230 我們將不得不使用從這個意圖推出新的活動, 358 00:24:55,230 --> 00:25:02,240 所以我們可能要創建一個全局常量或還特別公開常數 359 00:25:02,240 --> 00:25:06,240 這將幫助我們知道我們要如何來引用字符串 360 00:25:06,240 --> 00:25:09,090 因為當我們創建了一個意圖,我們不只是調用一個新的活動, 361 00:25:09,090 --> 00:25:11,520 但我們也可以給它一個信息包。 362 00:25:11,520 --> 00:25:14,720 一個bundle實際上是Android使用的術語, 363 00:25:14,720 --> 00:25:21,470 說給它額外的數據,它不​​能是一個非常複雜的數據類型的一種方式, 364 00:25:21,470 --> 00:25:24,510 但我們可以肯定包括布爾型或字符串或整數。 365 00:25:24,510 --> 00:25:29,750 諸如此類的事情。 366 00:25:29,750 --> 00:25:34,230 >> 隨意詢問任何預選賽, 367 00:25:34,230 --> 00:25:36,900 公眾,最終,靜態的。 368 00:25:36,900 --> 00:25:38,610 公開是最重要的一個。 369 00:25:38,610 --> 00:25:47,090 這意味著我們可以訪問此變量從其他源代碼文件 370 00:25:47,090 --> 00:25:49,590 比如,當我們創建了一個新的活動。 371 00:25:49,590 --> 00:25:52,190 大家可以參考一下這個文件內的字符串。 372 00:25:52,190 --> 00:25:57,160 如果它是私有的,這意味著它是有限,這個單獨的文件。 373 00:25:57,160 --> 00:26:02,430 不過,我們會打電話給這個像額外的消息。 374 00:26:16,260 --> 00:26:23,300 現在,我們已經取得了這個功能,如果我們按一下按鈕,這個函數將被調用。 375 00:26:23,300 --> 00:26:27,970 但是我們還沒有做任何事情,很明顯,與功能。 376 00:26:27,970 --> 00:26:33,130 我們現在要做的是創建一個新的活動, 377 00:26:33,130 --> 00:26:35,350 的活動,實際上將陸續推出。 378 00:26:35,350 --> 00:26:44,330 在Eclipse中,我們可以說新的Andr​​oid活動,空白活動。 379 00:26:44,330 --> 00:26:46,530 我們可以給它一個名字。 380 00:26:46,530 --> 00:26:57,050 讓我們叫它結果活動。 381 00:26:57,050 --> 00:27:04,430 然後此層次的父字段指定的方式 382 00:27:04,430 --> 00:27:08,180 的活動如何彼此相關的。 383 00:27:08,180 --> 00:27:11,020 因為這一個從其他活動將陸續推出 384 00:27:11,020 --> 00:27:27,520 我們應指定,它有父的主要活動。 385 00:27:27,520 --> 00:27:31,220 >> 我可以點擊下一字段,這將告訴我們 386 00:27:31,220 --> 00:27:33,830 還包括一些可選字段, 387 00:27:33,830 --> 00:27:38,800 但關於ADT,再次,是很好的事情,如果我在這裡向下滾動 388 00:27:38,800 --> 00:27:45,740 在清單中,記住,這一切真的被列入默認情況下, 389 00:27:45,740 --> 00:27:48,930 當我們最初創建項目 390 00:27:48,930 --> 00:27:53,090 因為我們現在只是用來創建一個新的活動,而不是 391 00:27:53,090 --> 00:27:58,610 這樣做,因為我們經歷過他們的GUI添加自己的類文件 392 00:27:58,610 --> 00:28:01,930 它已經增加了這一切為我們的清單, 393 00:28:01,930 --> 00:28:06,020 這意味著,現在的操作系統將不會抱怨 394 00:28:06,020 --> 00:28:09,400 當我們嘗試推出這項活動。 395 00:28:09,400 --> 00:28:14,620 當然,也給它的標籤,這也說明了在字符串。 396 00:28:14,620 --> 00:28:17,340 它做了很多的事情,我們的後端。 397 00:28:17,340 --> 00:28:20,140 不管怎樣,現在,我們有這個結果活動, 398 00:28:20,140 --> 00:28:23,810 實際的源代碼在源文件夾中的文件, 399 00:28:23,810 --> 00:28:33,540 你可以看到簡單地談談這 400 00:28:33,540 --> 00:28:37,790 因為我們告訴它關於這個層次的父母 401 00:28:37,790 --> 00:28:46,640 它給了本場android.r.ide.home此onOption所選的事情。 402 00:28:46,640 --> 00:28:49,020 >> 這基本上是說的是,現在有一個菜單按鈕 403 00:28:49,020 --> 00:28:53,110 在屏幕的左上角 404 00:28:53,110 --> 00:29:02,220 如果我回去到PowerPoint,我們第一次談到​​行動起來吧 405 00:29:02,220 --> 00:29:05,380 因為父層次,現在有一個小箭頭,回到這裡 406 00:29:05,380 --> 00:29:10,610 這是可點擊的,所以我們應該能夠到後,我們運行這個程序 407 00:29:10,610 --> 00:29:15,360 回去了,它是一種拯救我們有一點點的代碼。 408 00:29:26,220 --> 00:29:40,180 現在,在這個井,似乎抱怨了一會兒。 409 00:29:40,180 --> 00:29:43,910 我們的意見說出來。 410 00:29:43,910 --> 00:29:48,260 現在,為了真正與這2個活動, 411 00:29:48,260 --> 00:29:55,020 我們要創造的意圖,其中包括所有的數據。 412 00:29:55,020 --> 00:29:58,950 的sendMessage現在我要通過一些代碼位巡航 413 00:29:58,950 --> 00:30:00,700 ,並解釋說,因為我去。 414 00:30:00,700 --> 00:30:06,280 一個意圖,正如我所說,是從另一種方式來啟動一個活動。 415 00:30:06,280 --> 00:30:10,000 意圖是類型。我們正在創造一個變量myIntent。 416 00:30:10,000 --> 00:30:13,980 >> 這實際上是一個對象,這就是為什麼我們必須調用新。 417 00:30:13,980 --> 00:30:18,500 這是常見的Java使用,這可能需要一點點的時間來適應。 418 00:30:18,500 --> 00:30:23,900 這意味著我們正在使用的活動或類MainActivity, 419 00:30:23,900 --> 00:30:28,630 意圖以這種方式需要的活動,它會從 420 00:30:28,630 --> 00:30:36,060 和活動,這是怎麼回事,我們稱之為ResultActivity, 421 00:30:36,060 --> 00:30:38,170 那就是它自己的類。 422 00:30:38,170 --> 00:30:41,720 中包括這樣。 423 00:30:41,720 --> 00:30:47,370 然後,正如我之前提到的,我們給到編輯的文本字段,ID 424 00:30:47,370 --> 00:30:53,710 文本視圖,因此,以編程方式捕捉 425 00:30:53,710 --> 00:31:01,860 ,存在在EDITTEXT中的文本 426 00:31:01,860 --> 00:31:06,710 我們使用此功能稱為findViewByID, 427 00:31:06,710 --> 00:31:13,660 這是類似的東西,你會當試圖從DOM領域使用。 428 00:31:13,660 --> 00:31:17,560 也許大衛談講座。 429 00:31:17,560 --> 00:31:26,600 但它只是一種讓那些這就是為什麼我們這些字段標記這些東西。 430 00:31:26,600 --> 00:31:31,110 Id.editText1。 431 00:31:31,110 --> 00:31:35,220 它已經自動完成對我來說。 432 00:31:35,220 --> 00:31:42,010 >> 然後我們會還包括這EDITTEXT現在我們有現場 433 00:31:42,010 --> 00:31:47,640 在我們的程序中,所有的findViewByID基本上沒有 434 00:31:47,640 --> 00:31:50,870 你可以把它看作是給大家一個參考,EDITTEXT。 435 00:31:50,870 --> 00:31:54,570 現在,我們想要得到的字符串或消息 436 00:31:54,570 --> 00:32:00,670 ,在該EDITTEXT我們可以通過使用- 437 00:32:00,670 --> 00:32:03,360 你能想到的EDITTEXT為結構 438 00:32:03,360 --> 00:32:07,600 在Java對象與一大堆不同的方法,我們把它叫做 439 00:32:07,600 --> 00:32:10,650 或連接到它的字段和屬性。 440 00:32:10,650 --> 00:32:15,510 當我說EDITTEXT。它讓我有機會訪問 441 00:32:15,510 --> 00:32:19,770 方法如gettext的,這將得到當前文本 442 00:32:19,770 --> 00:32:23,990 在該EDITTEXT,然後再轉換,明確 443 00:32:23,990 --> 00:32:26,520 一個字符串,我們已經保存了該消息。 444 00:32:26,520 --> 00:32:32,730 現在我們真正想要做一些與這一意圖,我們只是瞬間。 445 00:32:32,730 --> 00:32:40,250 我會把多餘的,因為它是調用的意圖, 446 00:32:40,250 --> 00:32:43,330 再次,就像我之前說的,這是一種方式創建捆綁 447 00:32:43,330 --> 00:32:45,980 一大堆數據。 448 00:32:45,980 --> 00:32:50,920 額外的消息是我們的標籤,所以我們知道我們節省下, 449 00:32:50,920 --> 00:32:56,700 然後我消息。 450 00:32:56,700 --> 00:33:04,870 >> 然後我們就可以真正開始活動給它的參數myIntent。 451 00:33:04,870 --> 00:33:10,630 這實際上將推出的活動,所以,因為我現在升級到Windows 8 452 00:33:10,630 --> 00:33:15,870 有可能是一些簡要的錯誤,但試圖忽略它們。 453 00:33:28,010 --> 00:33:30,310 這是在Android模擬器。 454 00:33:30,310 --> 00:33:33,540 希望的代碼實際上將在瞬間彈出。 455 00:33:33,540 --> 00:33:36,680 同樣,無視所有那些小東西。 456 00:33:36,680 --> 00:33:42,290 但在Android模擬器可以模擬任何版本的操作系統 457 00:33:42,290 --> 00:33:45,180 從最早的甜甜圈,薑餅。 458 00:33:45,180 --> 00:33:49,640 這是果凍豆4.1。 459 00:33:49,640 --> 00:33:53,150 但是,你現在可以看到,這是我們所做的事情。 460 00:33:53,150 --> 00:33:55,780 這具有的MainActivity,EDITTEXT,按鈕。 461 00:33:55,780 --> 00:34:01,550 我可以輸入的東西,但是在這一點上我們還缺少什麼? 462 00:34:01,550 --> 00:34:05,190 我們作出了場MainActivity發送消息 463 00:34:05,190 --> 00:34:08,570 的其他活動,但在這一點 464 00:34:08,570 --> 00:34:12,330 我們沒有做任何其他活動,所以它不會收到任何東西。 465 00:34:12,330 --> 00:34:18,800 讓我們完成了這部分在我們繼續之前。 466 00:34:18,800 --> 00:34:25,760 >> 這種結果的活動,我們需要做的是什麼,我們需要做的是,我們需要到 467 00:34:25,760 --> 00:34:30,070 我們也可以在這個活動中引用的意圖, 468 00:34:30,070 --> 00:34:33,580 所以我們要捕獲的意圖,這是非常簡單的。 469 00:34:33,580 --> 00:34:40,780 它是一個函數包含在活動類, 470 00:34:40,780 --> 00:34:47,610 因此,我們可以說“消息的意圖。” 471 00:34:47,610 --> 00:34:56,260 “意向書myIntent =的getIntent。” 472 00:34:56,260 --> 00:35:00,030 而這將給我們現在myIntent是一個對象, 473 00:35:00,030 --> 00:35:05,380 這是一個參考的意圖,我們這個活動。 474 00:35:05,380 --> 00:35:10,130 MainActivity調用,並提供了額外的信息,導致活動。 475 00:35:10,130 --> 00:35:14,070 結果活動現在看起來,導致這裡的意圖, 476 00:35:14,070 --> 00:35:23,540 我們可以訪問的信息是,我們在中的另一個, 477 00:35:23,540 --> 00:35:26,370 getStringExtra,這會為我自動完成。 478 00:35:26,370 --> 00:35:31,190 然後記得,我們​​標記的方式,數據位 479 00:35:31,190 --> 00:35:38,400 為給這一領域就在這裡,這個公共字符串, 480 00:35:38,400 --> 00:35:42,080 這是我們實際上包括字符串標記。 481 00:35:42,080 --> 00:35:48,450 >> 如果我說MainActivity.Extra_Message, 482 00:35:48,450 --> 00:35:52,200 它就在那裡,這是有點像參數名稱 483 00:35:52,200 --> 00:35:55,330 當我們通過從控制器的代碼模板, 484 00:35:55,330 --> 00:35:57,680 當我們想要說標題箭頭的東西。 485 00:35:57,680 --> 00:36:01,140 它的想法是相同的排序。 486 00:36:01,140 --> 00:36:07,130 現在,請記住這一點。 487 00:36:07,130 --> 00:36:12,230 我們也有這個自動創建或自動生成的代碼 488 00:36:12,230 --> 00:36:16,410 結果活性,其中包括在中間的文本圖 489 00:36:16,410 --> 00:36:19,690 說“世界,你好。 490 00:36:19,690 --> 00:36:27,510 我們可能有更大。 491 00:36:27,510 --> 00:36:33,980 讓我們做到這一點。 492 00:36:33,980 --> 00:36:39,550 我們可以使40密度獨立像素。 493 00:36:39,550 --> 00:36:42,670 讓我們來看看,這是超級巨大的。這將是好的。 494 00:36:42,670 --> 00:36:48,180 然後以引用這個人在我們的代碼中的文本視圖 495 00:36:48,180 --> 00:36:53,890 我們需要給它一個編號, 496 00:36:53,890 --> 00:36:58,350 為了做到這一點,我們說@ + ID,這意味著我們將它的ID。 497 00:36:58,350 --> 00:37:02,480 如果我們剛才說的@ id,它會假設,我們引用一個ID已經存在, 498 00:37:02,480 --> 00:37:07,760 讓調用這個resultTextView。 499 00:37:07,760 --> 00:37:10,570 注意到,在XML中有沒有分號或任何需要。 500 00:37:10,570 --> 00:37:12,380 一切都在這些標籤。 501 00:37:12,380 --> 00:37:15,530 它非常類似於HTML中大量的感官。 502 00:37:15,530 --> 00:37:22,760 >> 這需要一點點的時間來適應,但最終你會覺得很舒服。 503 00:37:22,760 --> 00:37:31,320 讓我們更新我們的結果文本視圖的文本, 504 00:37:31,320 --> 00:37:35,650 像我們一樣,當我們得到我們的其他活動中,編輯的文本字段 505 00:37:35,650 --> 00:37:46,630 MainActivity在這裡,我們也同樣會 506 00:37:46,630 --> 00:37:54,890 我們會發現視圖的ID。 507 00:37:54,890 --> 00:37:59,640 和R的情況下,我沒有提到這之前,是參考我​​們的資源文件夾, 508 00:37:59,640 --> 00:38:05,350 然後ID是一個參考的資源“文件夾中的一切,所有的ID, 509 00:38:05,350 --> 00:38:10,060 和resultTextView。 510 00:38:10,060 --> 00:38:13,010 像以前一樣,resultTextView是一個對象, 511 00:38:13,010 --> 00:38:15,780 這意味著它有與它相關聯的所有這些特性。 512 00:38:15,780 --> 00:38:20,610 當我們使用這個文本字段編輯文本或文本視圖的getText 513 00:38:20,610 --> 00:38:23,980 實際上,我們可以使用的setText 514 00:38:23,980 --> 00:38:26,960 然後,我們已經找到了該消息的意圖, 515 00:38:26,960 --> 00:38:35,760 所以我可以說的消息,這實際上設置消息。 516 00:38:35,760 --> 00:38:41,820 >> 它花點時間來啟動,然後我們可以看它是否崩潰, 517 00:38:41,820 --> 00:38:48,670 但這個過程有任何疑問,諸如此類的互動嗎? 518 00:38:48,670 --> 00:38:51,490 在許多方面,它的簡單。 519 00:38:51,490 --> 00:38:53,960 我之所以要通過相對簡單的東西 520 00:38:53,960 --> 00:38:57,330 再次,是因為你能看到的佈局之間的相互作用, 521 00:38:57,330 --> 00:38:59,520 的源代碼,參考的東西你怎麼 522 00:38:59,520 --> 00:39:07,680 也許得到Java的工作方式有一點點暴露。 523 00:39:07,680 --> 00:39:16,500 如果我輸入的東西在這裡,ohai一樣,然後我按一下按鈕, 524 00:39:16,500 --> 00:39:22,260 它推出一個新的活動,並,文本視圖ohai說。 525 00:39:22,260 --> 00:39:27,640 這是非常簡單的,但希望在這個例子中 526 00:39:27,640 --> 00:39:32,310 排序看到這種互動是如何工作的,和現在那些亂七八糟的文件 527 00:39:32,310 --> 00:39:36,870 所有這些項目文件夾的左側,希望你知道現在去哪裡找。 528 00:39:36,870 --> 00:39:38,700 這是你的源代碼區域。 529 00:39:38,700 --> 00:39:41,760 >> 佈局是真正的唯一的事情,你會處理包括圖像,直到你 530 00:39:41,760 --> 00:39:46,370 可繪製或什麼的,和值,即包括字符串, 531 00:39:46,370 --> 00:39:51,960 正如我們提到的,風格是有點像CSS。 532 00:39:51,960 --> 00:39:56,410 當你想解決這個問題,但直到你感覺很舒服,增加額外的天賦 533 00:39:56,410 --> 00:40:02,520 您的應用程序就沒有必要擔心太多。 534 00:40:02,520 --> 00:40:07,410 只是包裹起來的另一件事情,你一定要包括 535 00:40:07,410 --> 00:40:13,010 假設你要很酷的功能集成,並保存自己的一些額外的編碼 536 00:40:13,010 --> 00:40:16,460 將包括第三方庫。 537 00:40:16,460 --> 00:40:19,840 這裡是小的Andr​​oid與福爾摩斯的帽子的傢伙。 538 00:40:19,840 --> 00:40:23,040 這是一個行動吧福爾摩斯庫, 539 00:40:23,040 --> 00:40:25,390 這基本上意味著,你看到剛才的動作欄, 540 00:40:25,390 --> 00:40:29,590 這是現在的標準配置冰淇淋三明治和糖豆, 541 00:40:29,590 --> 00:40:33,100 如果你想帶那種舊版本的用戶體驗,以用戶 542 00:40:33,100 --> 00:40:39,290 並保存自己的擔心用戶如何去瀏覽 543 00:40:39,290 --> 00:40:42,490 在舊版本中,當那個東西是不存在,你可以包括庫 544 00:40:42,490 --> 00:40:46,770 然後你只需要參考,而不是默認的Andr​​oid 545 00:40:46,770 --> 00:40:50,250 庫行動吧,你引用這個支持庫。 546 00:40:50,250 --> 00:40:53,090 >> Scoreloop的之類的東西,這是偉大的,如果你要,其中包括遊戲。 547 00:40:53,090 --> 00:40:57,280 它可以讓你添加遊戲排行榜和成就。 548 00:40:57,280 --> 00:41:00,900 Admob的是一種把廣告到您的應用程序 549 00:41:00,900 --> 00:41:02,900 的情況下,你想一點點錢。 550 00:41:02,900 --> 00:41:05,730 當然,也有整合有Facebook和Twitter 551 00:41:05,730 --> 00:41:08,170 如果你想分享的東西很容易,等等。 552 00:41:08,170 --> 00:41:15,120 Dropbox的,同樣,Google Analytics(分析)是尋找一個有該圖表。 553 00:41:15,120 --> 00:41:19,070 這將是非常重要的,如果你真的想看到誰交互 554 00:41:19,070 --> 00:41:25,800 與您的應用程序或者是誰,他們是如何相互作用,等等。 555 00:41:25,800 --> 00:41:30,650 默認情況下,谷歌,告訴你很多已安裝您的應用程序的統計信息 556 00:41:30,650 --> 00:41:35,020 他們有什麼樣的手機,他們有什麼樣的操作系統版本。 557 00:41:35,020 --> 00:41:38,080 但是,如果你希望看到誰在使用它每天的基礎上,以及他們如何使用它 558 00:41:38,080 --> 00:41:42,860 那麼你會希望包括某種這樣的跟踪系統。 559 00:41:42,860 --> 00:41:44,990 >> 當你準備好分發您的應用程序 560 00:41:44,990 --> 00:41:46,930 我並不需要太多的深度進入,在。 561 00:41:46,930 --> 00:41:49,090 點擊這裡的鏈接,谷歌播放。 562 00:41:49,090 --> 00:41:51,080 它使用的是Android市場。 563 00:41:51,080 --> 00:41:53,470 他們更名一切與谷歌的播放, 564 00:41:53,470 --> 00:41:55,230 所以現在你提交。 565 00:41:55,230 --> 00:41:57,140 這是非常簡單的。 566 00:41:57,140 --> 00:42:01,070 你必須包括說明,一些截圖。 567 00:42:01,070 --> 00:42:05,660 就像我說的,有沒有像iOS的審批過程。 568 00:42:05,660 --> 00:42:07,270 和從這裡去哪裡? 569 00:42:07,270 --> 00:42:09,450 我向您展示了一個非常簡單的例子。 570 00:42:09,450 --> 00:42:13,270 我們希望,如果它似乎極其簡單 571 00:42:13,270 --> 00:42:15,740 那麼這可能是一個好兆頭。 572 00:42:15,740 --> 00:42:20,080 如果你感到有點困惑或不確定,正是我打字 573 00:42:20,080 --> 00:42:26,160 這也蠻好的,但是從這裡去谷歌指南。 574 00:42:26,160 --> 00:42:28,330 這是一個偉大的地方開始。 575 00:42:28,330 --> 00:42:31,460 它會跟你通過他們所期望的應用程序設計方面, 576 00:42:31,460 --> 00:42:33,380 用戶通常是如何與它進行交互。 577 00:42:33,380 --> 00:42:36,450 它更比iOS更自由的形式,我會說, 578 00:42:36,450 --> 00:42:41,330 它似乎像表意見,我不知道,那是他們的麵包,黃油。 579 00:42:41,330 --> 00:42:44,690 一切都是表視圖,向上和向下滑動。 580 00:42:44,690 --> 00:42:48,160 有了Android,他們肯定鼓勵人們看它從 581 00:42:48,160 --> 00:42:51,720 一大堆不同的觀點。 582 00:42:51,720 --> 00:42:56,000 >> 當包括軟件開發工具包在這個ADT 583 00:42:56,000 --> 00:43:03,010 默認情況下,你在Android有一大堆的樣本項目。 584 00:43:03,010 --> 00:43:05,470 就在這裡,機器人,機器人示例項目。 585 00:43:05,470 --> 00:43:11,870 如果我點擊的話,我可以選擇一個版本的樣品項目申請。 586 00:43:11,870 --> 00:43:13,300 這裡有一個不同的事情一大堆。 587 00:43:13,300 --> 00:43:16,690 開始行動吧兼容性, 588 00:43:16,690 --> 00:43:24,610 加速度播放,備份和恢復,支持藍牙,手勢建設者。 589 00:43:24,610 --> 00:43:28,930 噴氣男孩是一個樣本,他們給你的遊戲,是LunarLander。 590 00:43:28,930 --> 00:43:31,250 這裡有一大堆的示例應用程序, 591 00:43:31,250 --> 00:43:35,290 他們都針對Android的API在不同的方面, 592 00:43:35,290 --> 00:43:41,520 的想法是,當你讓你的應用程序 593 00:43:41,520 --> 00:43:44,110 你不需要學習一切關於Android的Andr​​oid應用程序。 594 00:43:44,110 --> 00:43:47,300 你只需要了解的部分,其實你要使用。 595 00:43:47,300 --> 00:43:49,340 看看這些樣品庫。 596 00:43:49,340 --> 00:43:51,510 隨意進行複製和粘貼代碼,並重新應用它。 597 00:43:51,510 --> 00:43:53,850 這是一個偉大的事情,看起來更困難的代碼 598 00:43:53,850 --> 00:43:57,060 並嘗試去了解它,這當然是為什麼CS50 599 00:43:57,060 --> 00:44:01,510 我們常常給你大量的源代碼。 600 00:44:01,510 --> 00:44:04,620 看看其中的一些,如果你要使用類似的庫 601 00:44:04,620 --> 00:44:08,630 然後將其應用到自己的代碼。 602 00:44:08,630 --> 00:44:10,430 當然,有教程。 603 00:44:10,430 --> 00:44:12,690 搜索教程。 604 00:44:12,690 --> 00:44:17,020 我發現了很多好的網上可以給你帶來加快速度 605 00:44:17,020 --> 00:44:20,080 片段真的是什麼,以及如何可以使用它們。 606 00:44:20,080 --> 00:44:22,240 >> 這些新設計的東西,有些像碎片一樣, 607 00:44:22,240 --> 00:44:26,840 你真的不必擔心,除非你正在做一個 608 00:44:26,840 --> 00:44:30,560 在相當大的範圍內項目。 609 00:44:30,560 --> 00:44:32,510 他們的事情,谷歌正試圖逐步英寸 610 00:44:32,510 --> 00:44:35,570 StackOverflow的當然是你的朋友。 611 00:44:35,570 --> 00:44:37,930 希望我賣給你的Andr​​oid上, 612 00:44:37,930 --> 00:44:41,640 實現它只是編碼語言方面更容易接近。 613 00:44:41,640 --> 00:44:45,970 Java是Objective-C的理解比我想說容易得多。 614 00:44:45,970 --> 00:44:50,780 Android正在成長,我覺得比iOS更。 615 00:44:50,780 --> 00:44:54,890 我的意思是,有太多的數據是,除了我在想什麼。 616 00:44:54,890 --> 00:44:56,920 這是怎麼回事了一段時間, 617 00:44:56,920 --> 00:45:00,880 他們是落後幾年在其設計週期 618 00:45:00,880 --> 00:45:04,690 所以它的排序可以理解的,他們還在通過一些 619 00:45:04,690 --> 00:45:09,080 一致性的問題,比如這個動作欄為他們仍然是一個新事物, 620 00:45:09,080 --> 00:45:16,010 排序在所有的應用程序創建類似的用戶體驗。 621 00:45:16,010 --> 00:45:20,650 希望你可以向前走,現在開放的Eclipse 622 00:45:20,650 --> 00:45:22,870 ,使自己的Andr​​oid應用程序。 623 00:45:22,870 --> 00:45:30,240 >> 沒有人有任何的問題之前,我們總結什麼? 624 00:45:30,240 --> 00:45:34,410 我可以告訴你,答案是42。 625 00:45:34,410 --> 00:45:41,990 嗯,高興編碼大家,祝你好運。 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]