[Powered by Google Translate] [Семінары] [Android праграмы і дадатку (Зараз з Jelly Beans!)] [Іарданіі Jozwiak] [Гарвардскі універсітэт] [Гэта CS50.] [CS50.TV] Прывітанне ўсім, і дабро запрашаем у Android праграмы і дадатку (Зараз з Jelly Beans!) Семінар. Яна называецца Зараз з дражэ, вядома, таму што апошняя версія АС называецца Jelly Bean. Калі я казаў пра Android у мінулым годзе і зрабіў гэта ў асноўным жа семінары Я ўяўляў шаблонаў праектавання і стылістычных варыянтаў для Gingerbread, хоць Сэндвіч Марозіва выйшлі ў той час, і гэта тое, што мы будзем казаць пра будучыню няшмат. Android, вядома, ёсць некаторыя праблемы з фрагментацыяй, таму апошнія Google аперацыйнай сістэмы, як правіла на самай справе не збіраўся стаць распаўсюджаны сярод карыстальнікаў для патэнцыйна да аднаго года, на жаль. Але уліку таго, што, мы будзем казаць пра шмат прычын, чаму Android значна лепш, чым IOS. Добра, мы пагаворым аб Android супраць IOS, Дызайн некаторых парадыгмаў, як вы будзеце атрымаць створаны толькі ў адным слайдзе, і вялікая розніца паміж гэтым і мінулым годам я проста хачу зум праз некаторыя канцэптуальныя рэчы працуючы з аперацыйнай сістэмы, а затым перайсці ў сапраўды просты прыклад. На самай справе, проста прыклад, які апісвае Google для стварэння першага прыкладання і мы пройдзем яго разам, і проста апісаць. Я ведаю, многія з вас толькі закадаваныя ў C, так што Java ўжо будзе іншага пункту гледжання, і такім чынам вы будзеце атрымаць вашыя ногі мокрыя і адчуваць сябе крыху больш камфортна з ім, мы спадзяемся. Кароткі агляд, Android супраць IOS. У Android ёсць гэта аднаразовы распрацоўшчык збор у памеры $ 25, Ні адзін з гэтай рэчы $ 100 у год. Там няма ніякіх абмежаванняў, што азначае, што калі я хачу, каб прадставіць прыкладання, Я проста прадставіць яго, і няма ніякага працэсу сцвярджэнні, што ёсць для IOS. Вы дабіраецеся, каб развівацца з Java Выкарыстанне Eclipse, якая з'яўляецца крос-платформавы, так што гэта не мае значэння, калі ў вас ёсць Mac, Вокны, ці некаторыя Linux машыны. Вядома, з прашыўкай вы павінны выкарыстоўваць XCode на Mac, Android і выкарыстоўваецца значна больш людзей, так што калі вы хочаце, каб вашыя прыкладання, каб мець нейкую бачнасць або, магчыма, зарабіць трохі грошай ад рэкламы Вы, верагодна, больш за ўсё выйграюць ад Android. І адна рэч, якая заўсёды была вядомая аб Android з'яўляецца крайняя колькасць налады, тады як IOS вельмі зафіксаваныя ў іх шляху так, што яны могуць падтрымліваць бяспеку і кантроль над кожным аспектам мала канструкцыі ў рамках сваёй аперацыйнай сістэмы і асобных прыкладанняў. Android вельмі вольнай форме, і ёсць яшчэ шмат магчымасцяў. Добра, некаторыя канструктыўныя парадыгмаў. Звярніце ўвагу, тут гэтак жа, як IOS мае таблетак і iPhone'ов і док рыскі яны павінны падтрымліваць, скажам, як дзясятка прылад, калі вы хочаце падтрымліваць гістарычныя рэчы. З Android вы павінны падтрымліваць сотні прылад, так што ёсць некаторыя рэчы, якія Google спрабуе рэалізаваць каб зрабіць працу карыстальнікаў трохі больш паслядоўную, але мы таксама пагаворым пра тое, як гэта азначае, што ёсць праблемы фрагментацыі што вы ўвесь час павінны быць у курсе падтрымкі. Драбленне азначае, што існуе шмат розных аперацыйных сістэм шмат розных тэлефонаў з рознымі абсталявання пад кіраваннем Android усё ў той жа час, так што гэта граф тут ўзыходзіць на працягу 6 месяцаў. Так, 6 месяцаў, і вы можаце ўбачыць, як самая цёмная паласа на дно Jelly Bean, які выйшаў на працягу лета, і вы можаце ўбачыць прама цяпер, верагодна, каля 2% тэлефонаў ёсць. Сэндвіч Марозіва выйшаў больш за год таму, і чвэрць тэлефонаў ёсць. Ёсць яшчэ шмат тэлефонаў, якія выкарыстоўваюць версію аперацыйнай сістэмы ад некалькі гадоў таму. Адна рэч, якую Google спрабавала зрабіць, каб зрабіць працу карыстальнікаў шмат больш аднастайным прыкладання пачынаецца з сотавым, якая з'яўляецца планшэтнай версіі, то Ice Cream Sandwich, і Jelly Bean, яны сапраўды спрабуюць падкрэсліць выкарыстанне гэтай панэлі дзеянняў, якіх з'яўляецца тое, што вы можаце бачыць у верхняй тут, ўсё прама тут, у тым ліку гэтая маленькая кнопка налады. Гэта выбар дызайну. Зараз, калі вы бачыце 3 пункту гэта азначае, націсніце на гэтую, і там будзе выпадальнае меню, у якім ёсць нейкая налады. Гэта толькі паказвае, таму што я націснуў на гэтую кнопку. Гэта тое, што яны спрабуюць выкарыстаць, каб зрабіць прыкладання трохі больш паслядоўнымі па ўсіх напрамках і, так што карыстальнік мае лепшую сэнсе раўнамернай вопыту. Такім чынам, у выпадку, калі вы гэтага не зрабілі, або калі вы назіраеце ў сябе дома , То вы можаце выканаць наступныя дзеянні, каб наладзіць сераду кадавання. У ім прымуць удзел, перайшоўшы на сайт тут. Вы можаце ўсталяваць Google Android SDK і вынікайце некаторых апісаннях там. Яны кажуць вам усё. Яны маюць ўстаноўкі SDK, спампаваць Зацьменне Класічная версія, хоць, вядома, мы кадавання ў Java. Яны рэкамендуюць, гэта адно, а то гэтая ADT, Android Development Tools, гэта убудова, які вы ўсталёўваеце ў Eclipse, які дазваляе маюць значна больш рацыянальны досвед працы з Android у Eclipse. Гэта дасць вам некаторыя графічныя карыстацкія інтэрфейсы для праектавання погляды, і гэта дасць вам значна больш падтрымкі і магчымасць запуску з дапамогай эмулятара і ўсё такое падобнае. Ужыванне базы. Я хачу пагаварыць пра тое, як праекты ў рамках Android структураваныя, і потым мы паедзем у невялікі прыклад, і, спадзяюся, Вы можаце задаць пытанні ў любы момант і адчуваць сябе камфортна ў канцы яго. У нас ёсць некаторыя жаргону першым. Дзейнасці, як на экране вы бачыце, калі вы запускаеце праграму. Увесь вопыт з'яўляецца самай дзейнасці, так што вы можаце думаць пра гэта як экран ці гледжання, але на самой справе боку зыходны код яго. Мы да гэтага часу называюць фактычным інтэрфейсных частка яго зроку. Гэта накшталт як у PSET 7 у нас была кантролера, а затым выгляд. Дзейнасць з'яўляецца больш ці менш кантролера і выгляд, што мы робім з пункту гледжання XML , Звязаны з гэтай актыўнасці. Фрагменты з'яўляюцца чым-тое, што рэалізавана ў сэндвіч Марозіва ісці наперад. Гэта проста ідэя прымаць частка віду або актыўнасць і падзяліць іх на асобныя ўчасткі, каб мы маглі зрабіць наш код больш зручным для гэтых шмат розных прылад што мы павінны падтрымліваць, а гэта ўсяго толькі спосаб паспрабаваць таксама фактар ​​больш кода. Паслугі з'яўляюцца фонавымі рэчы, як прайграванне музыкі або навігацыйныя ўказанні патэнцыйна. Пастаўшчыкі кантэнту, гэтыя інтэрфейсы ў аперацыйнай сістэме , Што дазваляе атрымаць доступ да агульных дадзеных, такія як кантактная інфармацыя, а затым намер тое, што мы будзем выкарыстоўваць, калі мы хочам пачаць Новыя дзеянні ў нашай бягучай дзейнасці. Hello Android, гэта будзе праект, які мы будзем казаць пра. Я на самой справе зрабіць гэта за вас, і тады мы будзем рабіць рэчы, дзе мы націсніце кнопку з тэкстам і пачаць новую дзейнасць. Вельмі проста, але я хачу, каб прайсці тое, што будзе ісці ў такім праекце. Калі вы робіце новы праект вы ўбачыце ў Зацьменне ёсць гэты праект пад назвай Hello Android. Акрамя таго, ёсць цэлая куча тэчак тут. Тыя, што вы на самой справе звязаныя з з'яўляюцца зыходнай тэчцы, Тэчка рэсурсаў, ВИЭ, і ў некаторай ступені бібліятэкі тэчкі для бібліятэк. І менавіта так, мы знаходзімся на той жа старонцы, што з калі вы павінны былі стварыць новы праект, Вы можаце зрабіць гэта прама тут, так што калі я хачу назваць яго HelloAndroid, а затым аўтаматычна робіць цэлая куча інфармацыі для нас. Імя пакета павінна быць унікальным ідэнтыфікатарам , Якія звычайна звязаны з вэб-сайта, калі ў вас адзін. Напрыклад, я буду называць гэты net.cs50.helloandroid. І я ўжо зрабіў гэты праект адзін раз. Добра, прабачце. Давайце назавем гэта HelloCS50. І тады ён будзе прасіць такія рэчы, як тое, што свайго роду абразом мы хочам зрабіць. Гэта ўсё таму, што інтэрфейс Android Developer Tools, убудова, які мы дадалі да Зацьменне, таму мы можам выбраць рэчы, як якая абразок мы хочам, і што будзе ісці ў глыбіню, што, калі мы хочам. Але ў рэшце рэшт, проста пераканайцеся, праекта, і ўсё паказвае прама тут. Як я ўжо паказаў, на адным экране, у нас ёсць зыходная тэчка, і я буду казаць пра тое, што ўсё гэта азначае, хутчэй, але вы можаце бачыць, што адразу гэта вядзе нас да HelloCS50 экрана. Ёсць некаторыя кнопкі тут для дадання макетаў тэксту і тэкставага поля. Гэта накшталт як XCode, але на жаль не гэтак ўпарадкавана. Але кліпы будуць вашым сябрам і ADT у прыватнасці для гэтага. Добра, зыходную тэчку, дзе Java файлы праводзяцца, і гэта на самай справе запуск вашай праграмы. Гэта ў асноўным як кантралёры. Рэсурс або тэчку RES, дзе мы будзем трымаць экран макеты, малюнка, гукі, тэкст, анімацыю і ўсё астатняе, бібліятэкі, відавочна, бібліятэк. І маніфест, гэта чынам, што сістэма Android ведае як узаемадзейнічаць з вашым дадаткам. Паведамляе ёй пра дазволы і якія мерапрыемствы на самай справе будзе працаваць. Гэта усю неабходную інфармацыю, што неабходна для запуску вашага прыкладання. Тэчка з зыходнымі файламі, калі мы пашыраем яго, як вы можаце ўбачыць прама тут. І прыклад таго, што код будзе выглядаць-гэта код па змаўчанні. Як мы называлі яго, MainActivity. Па змаўчанні, мы атрымліваем OnCreate, якая з'яўляецца функцыяй, якая выклікаецца, калі гэтая дзейнасць нагрузках, так што вы хочаце патэлефанаваць OnCreate (savedInstanceState). Гэта дасць магчымасць аднавіць любы біт інфармацыі У выпадку, калі дадатак было прыпынена. Там цэлы цыкл жыццядзейнасці графіцы якога вы можаце паглядзець на калі вы атрымліваеце трохі больш паглыблены ў ім, але самая важная радок кода ёсць гэтая функцыя setContentView які будзе загружаць файл рэсурсу для макета. Тады што OnCreate тут у асноўным робяць гэта кажа калі я ствараю гэтую дзейнасць я хачу ўкласці менавіта гэты макет. І мы будзем казаць пра тое, што раскладка клавіятуры ў секунду. Калі б мы павінны былі запусціць, што вось яна выглядае сапраўды гэтак жа, як гэта, і па змаўчанні, таму што мы робім гэта ў Eclipse і ADT раблю гэта для нас гэта ўсё шаблоннага кода, які ствараецца для нас, і мы можам рухацца далей і змяніць становішча рэчаў, як нам падабаецца. Тэчка рэсурсаў, як я сказаў, гэта тое, дзе мы праводзім ўсе макеты, уводзімага каэфіцыента з пункту гледжання любога роду вобразаў- яны называюцца уводзімага каэфіцыента, а потым гукавыя файлы, меню. Гэта спосаб цэлую кучу XML ў добрым адсартаваны моды. Як бачыце, ёсць. HDPI, ldpi, MDPI xhdpi і тэчкі для уводзімага каэфіцыента. Гэтыя розныя шчыльнасці экрана, так высокую шчыльнасць пікселяў на цалю нізкай шчыльнасці, сярэдняй шчыльнасці, дадатковыя высокай шчыльнасці. Гэта, зноў жа, так што мы можам падтрымліваць усе гэтыя розныя прылады, і, у ідэале, вы будзеце мець розныя малюнкі для кожнага розным дазволам. Макеты, дзе мы ўключаем ўсе розныя макеты, якія будуць выкарыстоўвацца ў розных відах дзейнасці. Яны маглі б таксама ўключаць макеты фрагментаў, што азначае частковую дзейнасці ў прынцыпе. Калі вы хочаце зрабіць нешта крутое, як кожны раз, калі вы паварочваеце тэлефон Вы хочаце, каб мець рознае размяшчэнне вы можаце зрабіць макет ландшафту ў іншай тэчцы, Android аўтаматычна і мае цэлую кучу гэтых правілаў у тэчку рэсурсаў, таму ён будзе ведаць, каб паглядзець на розныя тэчкі на аснове бягучай налады тэлефона, якія апаратныя вы выкарыстоўваеце. Акрамя таго, гэта значэнне тут-V11 і V14-значэння і значэнні па змаўчанні тэчка гэта для- Ну, значэнні само па сабе, гэта будзе значэнне па змаўчанні ва ўсіх версіях аперацыйнай сістэмы. З іншага боку, v11 і v14 адпавядае сотавыя і Ice Cream Sandwich, адпаведна. Зноў жа, гэтыя спосабы, якія-у гэтых папках розныя радкі і стыляў, так што вы можаце наладзіць знешні выгляд вашага прыкладання ці патэнцыйна нават яго функцыянальнасці, хоць гэта, верагодна, будзе дрэнны ідэяй, на аснове версіі аперацыйнай сістэмы. І я казаў пра ўсё гэта тут. Зноў жа, палатно, сыравіна, вёрстка, каштоўнасцяў. Па змаўчанні, калі мы ідзем у Hello Android CS50 або прывітанне прама цяпер яна будзе выглядаць менавіта так. Яна скажа прывітанне свет. Як вы можаце бачыць прама тут з тэкстам Android тэкст гэтага тэксту гледжання, якая ў асноўным толькі этыкеткай, тое, што мы назвалі б гэта ў IOS. Ён мае пазначэнне гэтай пацешнай @ радкі / hello_world. Гэта так, мы можам-мы паспрабуем атрымаць усе радкі, ўсё жорстка-закадаваныя радкоў у Android у асобную тэчку, які бывае ў values.strings. Калі мы паглядзім тут, мы бачым, што ў нас ёсць жорстка-закадаваныя радкоў захаваны тут для прывітанне свет, і гэта завецца прывітанне свет, і гэта з'яўляецца свайго роду агульнае рашэнне дызайну на многіх платформах, што вы хочаце- радкі выгляду рэчаў, якія мы хочам быць патэнцыйна ў стане змяніць. Мы не хочам кантраляваць F ў нашым файле з зыходным кодам у нашым XML. Мы хочам, каб мець магчымасць змяніць гэта кожны раз, калі мы атрымліваем шанец. Гэты файл XML, strings.xml, з'яўляецца спосаб здабывання жорстка-закадаваныя радкоў, што б у адваротным выпадку нашы рэсурсы макета або ў нашым зыходным кодзе. Маніфест дзе мы трымаем гэтую важную інфармацыю аб дадатку. Яна ўключае ў сябе імя пакета. Гэта павінна быць унікальным ідэнтыфікатарам. У адрозненне ад App Store для IOS назвы дадаткаў Не павінна быць унікальным, і вы можаце на самой справе змяніць імя вашага прыкладання пасля адпраўкі, так што калі я пачынаю з Angry Birds, а потым я зрабіць абнаўленне, і я не хачу, каб выпусціць новую версію Думаю, я мог назваць гэта Angry Birds 2, пакуль я ў той жа цыкл выпуску. Было б проста паказаць як абнаўленне. Адзінае, што павінен быць унікальным, гэтае імя пакета, якіх не так шмат людзей ўбачаць. Ну, вы толькі паглядзець, калі вы глядзелі на зыходны код або, калі ёсць нейкая памылка. Кампаненты ўключаюць у сябе мерапрыемствы, таму мы павінны абвясьціць любога роду дзейнасці мы выкарыстоўваем. Гэта дазвол роду рэчы. Таму што Android не мае такі строгі працэс прыкладання прадстаўлення прыкладання замест гэтага яны проста робяць усё заснаваныя ад дазволаў і аб'явіць рэчаў у маніфесце. Версія SDK, таксама важна. Мы можам ўсталяваць выкарыстанне ў якасці версіі SDK нешта мінімуму. Відавочна, што вы хочаце стварыць код і дызайн для новых аперацыйных сістэмах. Магчыма, не самае новае, можа, не Jelly Bean. Можа быць, вы хочаце, каб дызайн у першую чаргу для Ice Cream Sandwich, хоць яны ў значнай ступені тое ж самае з пункту гледжання праектных рашэнняў і фактычнай бібліятэк і API. Але замест таго, ёсць людзі, арыгінальнай версіі Android, як зваротны шлях, калі Donut- якія да гэтага часу, здараецца, выкарыстоўваюць, якія спрабуюць загрузіць дадатак, а затым сказаць ён не працуе на маім тэлефоне можна ўсталяваць мінімальную версію і гэта будзе пернік або Ice Cream Sandwich або што вы адчувалі сябе камфортна адпраўкай. І гэта прыклад маніфест. Мы можам паглядзець на фактычную ў трохі. Добра, мы проста пойдзем наперад з дэма-версію цяпер. Гэта дэма, калі вы Google Android пабудаваць свой Першае дадатак або нешта накшталт гэтага. Мы разгледзім усе, што там адбываецца, і шкада, проста для даведкі хто тут ведае Java у нейкай ступені? Такім чынам, новая Java кадавання мовы для большасці людзей, якія выходзяць з CS50. Сцісла, каб пайсці зноў, што тут напісана, тое, што мы хочам зрабіць, гэта замест карэкціроўкі гэтага прыкладання Hello свеце што ўсё яна робіць гэта ён запускае і ён кажа, прывітанне свет і ён кажа, прывітанне CS50 у верхняй, таму што гэта імя аперацыі мы збіраемся паспрабаваць зрабіць тэкставае поле і кнопку так што, калі мы націскаем гэтую кнопку яна прыме тэкст з тэкставага поля і пачаць новую дзейнасць, і ён будзе казаць што б гэта ні тэкстам сказаў у сваёй дзейнасці, і гэта адносна проста. Гэта не вельмі цікава. Вы не хацелі б, каб вызваліць любое прыкладанне, як гэта. Але ён дэманструе некаторыя важныя рэчы, дызайну. Мы павінны ўзаемадзейнічаць з маніфестам, з размяшчэннем файлаў, з зыходным кодам, і вы можаце бачыць, як запусціць адзін від дзейнасці ад іншага. Мы пачнем з прататыпам для нашага першага мерапрыемствы якога я ведаю, што гэта збольшага невялікія, але, як вы можаце ўбачыць прама цяпер, усё гэта ён мае наш лагатып, які мы стварылі, імя аперацыі, і ён кажа, прывітанне свет у цэнтры. Замест гэтага, я першы збіраюся зрабіць гэта ў лінейнае размяшчэнне, адноснае размяшчэнне, і ўсе гэтыя рэчы Вы маглі глядзець уверх і стаяць пераходзячы ў нейкі момант з пункту гледжання макетаў. Ён шмат у чым падобны на HTML. Мы сказалі, што гэта на самай справе не варта ведаць з пункту гледжання праграмнай сэнсе, але ёсць так шмат розных макетаў вы можаце кантраляваць, і гэта так жа, як з пункту гледжання CSS стыляў. Там вельмі шмат адбываецца толькі з пункту гледжання эстэтыкі тут, і так, гэта каштуе навучанне, але гэта такая справа, трэба знайсці як вы ідзяце, і вы адчуваеце, што трэба нешта новае. Я магу скарыстацца некаторымі з інструментаў ADT тут па меншай меры, каб пачаць з. Я зраблю тэкставае поле, і Я зраблю кнопкі. Пакладзеце іх побач адзін з адным. Яны ўжо змяніць памер адпаведным чынам. На жаль, зноў жа, вяртаючыся да розніцы паміж лінейнай планіроўкай і адноснае размяшчэнне, лінейная планіроўка дае трохі больш функцыянальнасці з пункту гледжання запаўнення прасторы і пераканаўшыся, мы пазіцыянуем рэчы гарызантальна ці вертыкальна. Вялікая розніца паміж лінейнай планіроўкай і адноснае размяшчэнне адноснае размяшчэнне пазіцый ўсё, у параўнанні з іншымі відамі, і добрая рэч аб гэтым з'яўляецца тое, што гэта займае менш часу, каб прыцягнуць , Паколькі аперацыйная сістэма глядзіць на ўвесь код і кажа, што гэта ідзе па адносінах да гэтага тут, тут. Гэта азначае, што ён робіць менш вымярэнняў, чым цэлую кучу ўкладзеных лінейных макеты, які я павінен быў бы зрабіць, калі я хачу, каб усё было тут вертыкальна. У мяне ўжо ёсць некаторыя рэчы, збіраецца гарызантальна, так што я патрэбна іншая лінейная планіроўка укладваць іх у вертыкальным становішчы, але калі б я рабіў адносна макета я магу сказаць, захаваць гэты налева, гэта права, і гэтыя рэчы ніжэй. Але таму што я хачу, каб яны запоўнілі Прама цяпер я збіраюся выкарыстоўваць лінейны макет, і вы можаце ўбачыць ужо зараз ён многія з гэтых рэчаў для нас. Усе кропкі гледжання павінны мець ўласцівасці шырыні і вышыні, і гэта адбываецца, каб мець вагу 1, а гэта мае вагу 1 так, што ён запаўняе ўсю прастору. Аднак шырыня і вышыня з'яўляюцца найбольш важнымі. Гэты ідэнтыфікатар поля тут не важная ў межах фактычнага размяшчэння калі мы не з дапамогай адноснага размяшчэння і кажу, што мы можа спасылацца адзін від становішча ў адносінах да іншага. Калі б мы мелі адносна макета мы можам сказаць, гэта становішча ніжэй гэтага або вышэй гэтага ID, але гэта ID будзе мець важнае значэнне калі мы выкарыстоўваем яе ў код, таму што мы можам спасылацца гэтыя асабістыя думкі ў гэты шлях. І тады вы зможаце ўбачыць requestFocus пазнакі, т. е. тое, што вы, напэўна, бачылі ў PSET 7. Быў тэгі аўтафокус ці нешта ў гэтым напрамку для аднаго з палёў. І яшчэ адна рэч, вядома, мы можам зрабіць гэтак жа, як у HTML, і звярніце ўвагу, адна з добрых рэчаў аб ADT з'яўляецца тое, што тут autocompletes. Можа быць, не так добра, як гэта было ў XCode, але яна, тым не менш, і мы можам сказаць, падказкі, а затым даць яму нейкую радок хацеў напісаць паведамленне, і калі я даю яму момант, таксама заўважыў, што я атрымліваю трохі памылкі тут кажуць, што мы павінны выкарыстоўваць радок рэсурсу для гэтага, так што калі я, хай гэта робяць некаторыя з цяжкай працай для мяне Я магу выбраць гэты радок, зрабіць рэфрактар ​​Android і Android экстракт радок. Я магу даць яму гэтае імя, напісаць паведамленне, і тое, што ён зараз з'яўляецца, што ён замяніў жорстка-закадаваныя радкоў са спасылкай на радок. файл XML-радок, што азначае цяпер гэта тут. І я ведаю, што здаецца трохі трывіяльна і, як дадатковую працу ў гэтай кропцы, але калі ў вас ёсць цэлая куча рэчаў, цэлая куча радкоў, гэта вельмі важна, асабліва для лакалізацыі таму што, як я згадваў раней, Android з'яўляецца вельмі глабальна выкарыстоўванай аперацыйнай сістэмы што вы можаце проста зрабіць значэнні-ан або значэнняў-SP або што-то для англійскай ці іспанскай мове або іншых мовах. І тады вы, верагодна, не было гэтага вопыту яшчэ так як мы не рабілі шмат чаго JavaScript з пункту гледжання вэб-праграмавання, але мы таксама можам зрабіць гэта поле, званае OnClick для кнопкі, і гэта спосаб спасылкі ў наш макет што мы хочам пэўную функцыю, якая выклікаецца ў нашым зыходным кодзе. Я буду называць гэта SendMessage, і для таго, каб зрабіць гэтую працу, што азначае, у асноўным актыўнасць тут Мне прыйдзецца стварыць функцыю, якая з'яўляецца грамадскім так што яна можа быць даступная макета. Гэта пуста, таму што вы проста не хочаце, каб ён нічога вяртаць. Мы назавем гэта SendMessage, і яна прымае выгляд, якая з'яўляецца свайго роду кантэкст, які мы можам замацаваць гэты метад гэтай асобе гледжання, калі мы бяжым яго. І я не ведаю, калі вы заўважылі, ну, вы б не заўважылі, але ў гэты момант прама тут гэта ўяўленне тыпу, які да гэтага часу не ўключаны І, вядома, вы ўсё ведаеце з CS50 пра не уключаючы тыпы. Самае выдатнае, як Eclipse IDE з'яўляецца тое, што калі вы забыліся ўключыць тыпу яна будзе падкрэсліваць з невялікай чырвонай хвалістай а затым даць вам магчымасць імпартаваць гледжання. Хуткі спосаб зрабіць гэта з'яўляецца кіраванне пераключэннем О, і яна будзе імпартаваць усе файлы, якія ён павінен. Цяпер у нас ёсць гэтая функцыя SendMessage, якая збіраецца адпраўце паведамленне з MainActivity ў новую дзейнасць, мы збіраемся павінны выкарыстоўваць намеры запусціць новы від дзейнасці ад гэтага, такім чынам, мы, верагодна, захочаце стварыць глабальную канстанту або таксама асабліва публічная канстанта якія дапамогуць нам ведаць, як мы будзем спасылацца на радок таму што, калі мы ствараем намерах мы не проста выклікам новага віду дзейнасці, але мы таксама можам даць яму набор інфармацыі. Расслаенне на самай справе тэрмін, які выкарыстоўвае Android, і гэта спосаб сказаць, даць яму дадатковыя дадзеныя, якія яна не можа быць вельмі складанага тыпу дадзеных, але мы можам вызначана ўключаць лагічныя значэнні ці радкі або цэлыя. Такога роду рэчы. Не саромейцеся пытаць аб любым з гэтых адборачных тут, грамадскасці, фінал, статычная. Грамадскасць важная. Гэта азначае, што мы можам атрымаць доступ гэтай зменнай з іншых файлаў зыходнага кода напрыклад, калі мы ствараем новую дзейнасць. Мы можам спасылацца на радкі ў дадзеным файле. Калі гэта асабістае, гэта азначае, што ён абмяжоўваецца гэтым асобны файл тут. Але мы называем гэта нешта накшталт дадатковага паведамленні. Цяпер мы зрабілі гэтую функцыю, і калі мы націскаем кнопку, гэтая функцыя будзе выклікана. Але мы нічога не зрабілі, відавочна, з функцыяй. Тое, што мы хочам зараз зрабіць, гэта стварыць новы від дзейнасці, дзейнасць, якая на самой справе будзе запушчаны. У Eclipse можна сказаць, новае, Android дзейнасці, пусты дзейнасці. Мы можам даць яму імя. Давайце назавем гэта вынік нашай дзейнасці. А потым гэтая іерархічная поле бацька з'яўляецца спосаб задання якім чынам дзейнасць звязаны адзін з адным. Таму што гэта адна будзе запушчана з іншай дзейнасці мы павінны паказаць, што ён мае бацькі асноўнай дзейнасці. І я мог бы націснулі на наступнае поле там, якія сказалі б нам некаторыя дадатковыя поля, што яна была і ў тым ліку, але добрая рэч аб ADT, зноў жа, у тым, што калі я тут пракруціць ўніз У маніфесце памятаць, што ўсё гэта сапраўды было ўключана па змаўчанні калі мы першапачаткова створанага праекта, і зараз, таму што мы выкарыстоўвалі гэта стварыць новы від дзейнасці, а не толькі з'явіўся ўласны файл класа, таму што мы прайшлі іх GUI для гэтага гэта ўжо дадалі усё гэта ў маніфест для нас, які проста азначае, што цяпер аперацыйная сістэма не будзе скардзіцца калі мы спрабуем запусціць гэтую дзейнасць. І гэта таксама, вядома, далі яму этыкетку, якая таксама адлюстроўваецца ў радках. Ён робіць шмат рэчаў, на заднім канцы для нас. Ва ўсякім выпадку, зараз у нас ёсць гэты вынік дзейнасці, а, фактычны файл зыходнага кода ў зыходнай тэчцы, і вы можаце бачыць, коратка спыніцца на гэтым- таму што мы сказалі, што гэта пра гэта іерархічная бацькоў ён даў гэтай галіне android.r.ide.home у гэтым onOption абранай рэччу. Тое, што гэта ў асноўным кажу, ёсць кнопка меню зараз , Што ў верхнім левым куце экрана Калі я вярнуся ў PowerPoint, дзе мы ўпершыню загаварылі аб панэлі дзеянняў з-за іерархічнай бацькоў зараз ёсць маленькая стрэлачка сюды і гэта з'яўляецца інтэрактыўным, таму мы павінны быць у стане пасля-мы на самай справе гэта прыкладанне- вярнуцца, і гэта спосаб выратаваць нас трохі код. Зараз у гэтым, ну, гэта, здаецца, скардзяцца, што на імгненне. Давайце каментаваць гэта. Зараз, для таго каб рэальна ўзаемадзейнічаць з гэтымі 2 мерапрыемствы, мы павінны стварыць намер якая ўключае ў сябе ўсе гэтыя дадзеныя. У SendMessage цяпер я збіраюся ў круіз праз некаторыя фрагменты кода і растлумачыць, што, як я іду. Намеры, як я ўжо сказаў, гэта спосаб для запуску аднаго віду дзейнасці ад іншага. Намер тыпу. Мы ствараем зменную myIntent. І гэта на самай справе аб'ект, які з'яўляецца, чаму мы павінны прызначыць новыя. Гэта агульнае выкарыстанне Java там, што можа заняць крыху прывыкнуць. Гэта азначае, што мы выкарыстоўваем дзейнасці або класа MainActivity, і намеры такім чынам займае дзейнасць ён збіраецца з і актыўнасць, што гэта збіраецца, якую мы называем ResultActivity, і гэта свой уласны клас. Уключыце гэта. А потым, як я ўжо казаў, мы далі гэтаму ID ў поле рэдагавання тэксту і тэкставым выглядзе, таму для таго, каб захапіць праграмна тэкст, які існуе ў EDITTEXT Мы выкарыстоўваем гэтую функцыю называюць findViewByID, які падобны на тое, што вы будзеце выкарыстоўваць пры спробе атрымаць поля з DOM. Магчыма, Дэвід кажа пра гэта ў лекцыі. Але гэта ўсяго толькі спосаб атрымаць гэтыя-вось чаму мы тэг гэтыя рэчы з гэтых палёў. Id.editText1. Гэта ўжо autocompleting мяне там. І тады мы будзем таксама ўключаць-за EDITTEXT зараз у нас ёсць поле у нашай праграме, усё, што зрабіў, было findViewByID асноўным Вы маглі думаць пра яго, як даць нам спасылку на гэты EDITTEXT. Цяпер мы хочам атрымаць радок або паведамленне у межах гэтай EDITTEXT якія мы можам зрабіць з дапамогай параметру- вы маглі б падумаць EDITTEXT як структура- мы называем гэта аб'ект у Java-з цэлым букетам розных метадаў або поля і атрыбуты, прымацаваныя да яго. Калі я кажу EDITTEXT. гэта дае мне магчымасць доступу такі метад, як GetText, якая атрымае цяперашні тэкст у гэтым EDITTEXT, а затым пераўтварыць, якія відавочна ў радок, і мы выратавалі паведамленні. Цяпер мы сапраўды хочам зрабіць што-то з гэтым намерам мы стварылі ўсяго некалькі хвілін таму. Ўкласці дадатковыя, як гэта называецца ў намерах, якія, зноў жа, як я ўжо казаў, гэта спосаб стварэння расслаення з цэлай кучай дадзеных. Дадатковае паведамленне наш тэг, таму мы ведаем, што мы эканомім пад гэтым, і я ў тым ліку паведамленні. І тады мы зможам рэальна пачаць дзейнасць, даючы яму параметр myIntent. І гэта будзе сапраўды запусціць дзейнасці, так што цяпер, так як я павышаны да Windows 8 там могуць быць некаторыя памылкі, якія паказваюць, на кароткі час, але стараюся не заўважаць іх. І гэта эмулятар Android. Будзем спадзявацца, што код будзе на самой справе з'яўляюцца ў момант. Зноў жа, ігнаруючы ўсе тыя дробязі. Але эмулятар Android вы можаце эмуляваць любую версію аперацыйнай сістэмы ад самых ранніх, Donut, Gingerbread. Гэта Jelly Bean 4.1. Але, як вы можаце ўбачыць прама цяпер, гэта тое, што мы зрабілі. Гэта мае MainActivity, EDITTEXT, кнопка. Я магу надрукаваць што-то тут, але тое, што нам не хапае ў дадзены момант? Мы зрабілі поле ў MainActivity што адбываецца, каб адправіць паведамленне да іншай дзейнасці, але ў гэты момант мы нічога не зрабілі ў іншай дзейнасці, так што ён не збіраецца нічога атрымліваць. Давайце скончым гэтую частку перш чым рухацца далей. Гэты вынік дзейнасці, тое, што нам трэба зрабіць, гэта нам трэба зрабіць, гэта нам трэба- мы таксама можам спасылацца на намеры ў гэтай дзейнасці, так што мы павінны захапіць мэта, якая на самой справе проста. Гэта функцыя ўключана ў актыўнасці класа так што мы можам проста сказаць: "атрымаць паведамленне ад намеру". "Намер myIntent = getIntent". І гэта дасць нам цяпер-myIntent з'яўляецца аб'ектам, які з'яўляецца спасылкай на намер, якое прывяло нас да гэтай дзейнасці. MainActivity тэлефануе і дае дадатковую інфармацыю прывесці дзейнасць. Вынік дзейнасці цяпер глядзіць на намер, якое прывяло яго тут, і мы можам атрымаць доступ паведамленне, якое мы стварылі ў іншы, getStringExtra, і гэта будзе для мяне аўтазапаўнення. А потым памятаю, як мы метиться біт дадзеных быў, даўшы яму гэта поле прама тут, гэта грамадскае радкі, якая служыць ярлык радок, якую мы фактычна ўключаны. Калі я скажу, MainActivity.Extra_Message гэта тут жа, і гэта накшталт як імя параметру калі мы прайшлі кода з кантролера ў шаблон, калі мы нешта сказаць назву стрэлкі. Гэта такая ж ідэя ёсць. Зараз, памятайце пра гэта. У нас таксама быў створаны гэты аўтамабіль або аўтаматычна згенераваны код у выніку актыўнасці, які ўключае ў тэкставым выглядзе ў сярэдзіне , Што кажа прывітанне свет. Мы маглі б зрабіць, што патэнцыйна больш. Давайце зробім гэта першымі. Мы маглі б зрабіць гэта 40 незалежных шчыльнасцю пікселяў. Давайце паглядзім, што гэта супер велізарны. Гэта будзе ў парадку. І тады для таго, каб спасылацца на гэты індывідуальны погляд тэкст у наш код мы павінны даць яму ID, і для таго, каб зрабіць гэта мы гаворым @ ID +, што азначае, мы прызначаем ID. Калі мы толькі што сказалі, @ ID было б выказаць здагадку, мы спасылаемся на ідэнтыфікатар, які ўжо існуе, і назавем гэты resultTextView нашых. І заўважце, што ў XML няма неабходнасці коскі або што-небудзь. Усё ў гэтых тэгах. Ён вельмі падобны на HTML ў многіх сэнсах. Гэта зойме трохі прывыкнуць, але ў рэшце рэшт вы будзеце адчуваць сябе вельмі камфортна з ім. Давайце абновім тэкст для нашага выгляду тэксту вынік, і, як мы рабілі, калі мы атрымлівалі, што поле ўводу тэксту ў іншых нашых дзейнасць У MainActivity Тут мы таксама разгледзім таксама- мы даведаемся вынікі па ID. І R, у выпадку, калі я не згадаў пра гэта раней, з'яўляецца спасылка на наш татка рэсурсаў, а затым ID з'яўляецца спасылка на ўсё, што ў тэчцы рэсурсаў, усе ідэнтыфікатары, і resultTextView. І гэтак жа, як і раней, resultTextView з'яўляецца аб'ектам, якая азначае, што яна мае ўсе гэтыя ўласцівасці, звязаныя з ім. Калі мы выкарыстоўваем GetText для рэдагавання тэксту ў гэтым полі тэксту або прагляду тэксту мы сапраўды можам выкарыстоўваць зейТех, і тады мы ўжо знайшлі паведамленне ад намераў, Таму я магу сказаць паведамленне, і гэта будзе на самой справе набор паведамленняў. Гэта скарыстацца момантам, каб пачаць, і тады мы зможам пабачыць ці не ён выходзіць з ладу, але ёсць пытанні з нагоды гэтага працэсу тут жа, такога роду ўзаемадзеяння? У многіх адносінах гэта проста. Таму я іду праз нешта адносна простае , Зноў жа, таму што вы можаце бачыць ўзаемадзеянне паміж макет, зыходны код, як вам рэчы спасылкі і, магчыма, атрымаць мала ўздзеяння на Java як там працуе. Калі я на самой справе нешта тыпу ў тут, як Ohai, а затым, націснуўшы на кнопку, ён запускае новы від дзейнасці, і гэты тэкст гледжання кажа Ohai. Гэта вельмі просты, але, спадзяюся, пасля гэтага прыкладу вы як бы паглядзець, як гэта ўзаемадзеянне працуе, і цяпер, калі беспарадак файлы на левай боку для ўсіх гэтых папках праекта, спадзяюся, вы ведаеце, дзе шукаць цяпер. Гэта ваш зыходны код вобласці. Макет сапраўды адзінае, што вы будзеце мець справу з пакуль не ўключаюць у сябе выявы і уводзімага каэфіцыента або любы іншы, і каштоўнасці, якія могуць быць радкі, як мы ўжо згадвалі, а затым стыляў з'яўляецца тое, што накшталт як CSS. Адрас яго, калі вы хочаце, але, пакуль вы не адчуеце сябе камфортна з даданнем дадатковага нюх для вашага прыкладання няма неабходнасці турбавацца пра гэта занадта шмат. Проста, каб абгарнуць адну рэч, якую вы напэўна жадаеце, каб ўключаць- калі вы хочаце інтэграваць цікавыя функцыі і зэканоміць трохі дадатковага кадавання- будзе ўключаць у сябе 3-х фірмаў. Вось маленькі хлопец Android з Шэрлакам Холмсам капялюш. Гэта дзеянне бары Шэрлак бібліятэка, які ў асноўным азначае, што панэль дзеянняў вы ўжо бачылі, які ў цяперашні час стандартам у Ice Cream Sandwich, і Jelly Bean, Калі вы хочаце, каб прынесці такую ​​карыстацкі вопыт для карыстальнікаў на старых версіях і выратаваць сябе ад клопатаў пра тое, як карыстальнік будзе перамяшчацца на больш старых версіях, калі гэтая рэч не значыць вы можаце ўключыць гэтую бібліятэку а затым вы проста павінны даведачна-а не па змаўчанні Android бібліятэкі для панэлі дзеянняў, вы спасылаецеся на гэтую падтрымку бібліятэк. Такія рэчы, як Scoreloop, гэта выдатна, калі вы збіраецеся ўключыць у гульню. Вы можаце дадаваць табліцы лідэраў і дасягненні ў гульнях. Admob гэта спосаб размяшчэнне рэкламы ў прыкладаннях У выпадку, калі вы хочаце, каб зрабіць трохі грошай з яго. Вядома, ёсць Facebook і Twitter для інтэграцыі ёсць Калі вы хочаце падзяліцца рэчы лёгка, і так далей. Dropbox, тое ж самае, і Google Analytics з'яўляецца тое, што графік шукае нікога. Гэта будзе вельмі важна, калі вы сапраўды хочаце, каб бачыць, хто ўзаемадзейнічае з вашым прыкладаннем або хто гэта, як яны ўзаемадзейнічаюць, і гэтак далей. Google, па змаўчанні, кажа вам шмат статыстыкі аб тым, хто ўсталяваў дадатак і тое, што тэлефон у іх, што версія аперацыйнай сістэмы ў іх ёсць. Але калі вы хочаце даведацца, хто выкарыстоўвае яго на штодзённай аснове, і як яны выкарыстоўваюць яго то вы хочаце, каб ўключаць у сябе нейкія сістэмы сачэння падобнае. Калі вы будзеце гатовыя, каб распаўсюджваць свае прыкладанні Мне не трэба ісці ў тым, што ў занадта вялікай глыбіні. Націсніце на спасылку тут, Google Play. Раней лічылася, Android Market. Яны ўсе рэбрэндынг з Play Google, Такім чынам, зараз вы ўявіць, што. Гэта вельмі проста. Вы павінны ўключаць у сябе апісанне, некалькі скрыншотаў. Як я ўжо казаў, няма ніякай працэс сцвярджэння, як IOS. І куды ісці далей? Я паказаў вам вельмі просты прыклад. Спадзяюся, калі гэта здаецца жудасна просты то гэта, напэўна, добры знак. Калі вы наогул адчуваў сябе крыху блытаюць або не ўпэўнены дакладна, што я друкаваў гэта таксама добра, але адсюль пайсці ў Google Даведнікі. Гэта цудоўнае месца для пачатку. Ён будзе казаць вам, што яны чакаюць з пункту гледжання распрацоўкі прыкладанняў, як карыстальнікі звычайна ўзаемадзейнічаць з ім. Гэта значна больш вольнай форме, чым IOS, я б сказаў, якая здаецца, што табліца погляды-Я не ведаю, гэта іх хлеб з маслам. Усе табліцы слізгацення уверх і ўніз. З Android яны, безумоўна, заахвочваць людзей, каб паглядзець на гэта з цэлая куча розных пунктаў гледжання. Пры ўключэнні камплект распрацоўкі праграмнага забеспячэння ў гэтай ADT Па змаўчанні ў вас ёсць цэлая куча прыкладаў праектаў у Android. Прама тут, Android, Android Sample Project. Калі я націскаю на гэта, то я магу выбраць версію, для якой з прыкладаў праектаў прымяняюцца. Там цэлая куча розных рэчаў. Яна пачынаецца з дзеяннем сумяшчальнасці бар, акселерометр гульні, рэзервовае капіяванне і аднаўленне, Bluetooth, жэст будаўніка. Jetboy прыклад гульню яны даюць вам, як LunarLander. Ёсць цэлая куча прыкладаў прыкладанняў тут, і ўсе яны арыентаваныя на розныя аспекты API Android, і ідэя ў тым, што, як вы зробіце ваша прыкладанне Вам не трэба, каб даведацца ўсё пра Android зрабіць прыкладанне Android. Вы толькі павінны даведацца пра часткі, якія вы на самой справе збіраецеся выкарыстоўваць. Паглядзіце на гэтыя прыклады бібліятэк. Не саромейцеся, каб скапіяваць і ўставіць код і паўторна выкарыстоўваць гэта. Гэта выдатная рэч, каб паглядзець на больш цяжкім код і паспрабаваць зразумець яго, што, вядома, чаму ў CS50 мы часта даюць вам вялікая колькасць зыходнага кода. Паглядзіце на некаторыя з іх, калі вы збіраецеся выкарыстоўваць падобныя бібліятэкі , А затым прымяніць яго на свой уласны код. І, вядома, ёсць падручнікі. Шукаць падручнікі. Я знайшоў шмат добрых онлайн, які можа прынесці вам да хуткасці з тым, што фрагменты самай справе і як іх можна выкарыстоўваць. Некаторыя з гэтых новых рэчаў дызайну, як фрагменты, Вы сапраўды не павінны быць занепакоеныя, калі вы не робіце даволі вялікі па сваіх маштабах праект. Яны тое, што Google спрабуе паэтапна цалі Stackoverflow вядома, ваш сябар. Спадзяюся, я прадаў вам крыху на Android, разумеючы гэта значна больш лёгка падыходзіць з пункту гледжання толькі кадавання мовы. Java, я б сказаў, што значна лягчэй зразумець, чым Objective-C. Android расце я думаю, значна больш, чым IOS. Я маю на ўвазе, дадзеныя там таксама, акрамя таго, што я думаю. Гэта будзе прыкладна ў той час, і яны некалькі гадоў ззаду пункту гледжання іх цыклаў праектавання, так гэта накшталт зразумела, што яны ўсё яшчэ працуюць праз некаторыя з гэтых паслядоўнасць пытанняў, як гэта дзеянне бары новая рэч для іх да гэтага часу, Сартаваць стварэння падобны вопыт карыстальнікаў ва ўсіх сваіх прыкладаннях. Спадзяюся, вы можаце пайсці наперад, то і адкрыць Зацьменне і зрабіць свае ўласныя прыкладанні для Android. Хто-небудзь ёсць якія-небудзь пытанні, перш чым мы выніковае ні пра што? Я магу сказаць вам адказ 42. Ну, шчаслівага кадавання ўсіх, і поспех. [CS50.TV]