[Powered by Google Translate] [Seminar] [Android Apps (Tani me fasule pelte!)] [Jordani Jozwiak] [Universiteti i Harvardit] [Kjo është CS50.] [CS50.TV] Përshëndetje të gjithë, dhe i mirëpritur për Apps Android (Tani me fasule pelte!) Seminar. Ajo që quhet tani me fasule pelte, natyrisht, për shkak se versioni i fundit i OS është quajtur Jelly Bean. Kur kam folur për Android vitin e kaluar dhe e bëri këtë seminar në thelb të njëjtën Unë u paraqitur modelet e projektimit dhe zgjedhje stilistike për kek me xhenxhefil, edhe pse Cream Ice sandviçësh kishte dalë jashtë në kohë, dhe kjo është diçka që ne do të flasim për të shkuar përpara pak. Android, natyrisht, ka disa çështje me fragmentim, kështu që sistemi i fundit operativ Google është zakonisht me të vërtetë nuk do të bëhet e zakonshme në mesin e përdoruesve për të potencialisht deri në një vit, për fat të keq. Por, pa marrë parasysh se, ne do të flasim për shumë arsye pse Android është shumë më mirë se IOS. Mirë, ne do të flasim për iOS kundrejt Android, disa paradigma të projektimit, si ju do të merrni ngritur në vetëm një rrëshqitje, dhe dallim i madh mes kësaj dhe vitin e kaluar është që unë vetëm dua të zoom përmes disa gjëra konceptuale që punojnë me sistemi operativ dhe pastaj të shkoni në një shembull të vërtetë themelore. Në fakt, vetëm shembulli se Google përshkruan për ndërtimin app tuaj të parë, dhe ne do të shkojnë nëpërmjet saj së bashku dhe vetëm përshkruajnë. Unë e di shumë prej jush kanë koduar vetëm në C, kështu që Java është tashmë do të jetë një perspektivë të ndryshme, dhe në këtë mënyrë ju do të merrni këmbët tuaja lagësht dhe të ndjehen pak më të rehatshme me atë shpresë. Një përmbledhje e shpejtë, iOS kundrejt Android. Në Android nuk është kjo një tarifë kohë Zhvilluesi i 25 $, asnjëri prej kësaj gjëje $ 100 në vit. Nuk ka kufizime, që do të thotë se në qoftë se unë dua të paraqesë një app, Unë vetëm të paraqesë atë, dhe nuk ka asnjë proces miratimi si nuk është për iOS. Ju merrni për të zhvilluar me Java duke përdorur Eclipse, e cila është platformë kryq, kështu që nuk ka rëndësi në qoftë se ju keni një Mac, Windows, Linux apo ndonjë makinë. Sigurisht, me iOS ju duhet të përdorni XCode në një Mac, Android dhe është përdorur nga shumë njerëz më shumë, kështu që nëse ju doni app tuaj që të ketë një lloj të shikimit apo ndoshta të bërë një pak të holla nga reklama ndoshta ju jeni më shumë gjasa për të përfituar nga Android. Dhe një gjë që ka qenë gjithmonë i njohur për Android është shuma ekstreme e customization, kurse iOS është shumë e fiksuar në rrugët e tyre në mënyrë që ata mund të mbajnë sigurinë dhe kontrollin mbi çdo aspekt të vogël i projektimit në kuadër të OS dhe Apps të tyre individuale. Android është formë shumë e lirë, dhe nuk ka mundësi kaq shumë më tepër. Mirë, disa nga paradigmat e projektimit. Vini re këtu vetëm si iOS ka tableta dhe iPhone dhe iPod prek ata duhet të mbështesin, të themi, si një pajisje duzinë në qoftë se ju doni të mbështetur gjëra historike si. Me Android ju duhet për të mbështetur qindra e pajisjeve, kështu që ka disa gjëra që Google ka qenë duke u përpjekur për të zbatuar për të bërë përdorues të përjetojnë një pak më të qëndrueshme, por ne gjithashtu do të flasim rreth asaj se si kjo do të thotë se ka çështje të fragmentimit se ju vazhdimisht duhet të jetë i vetëdijshëm për mbështetjen. Copëzimi do të thotë se ka shumë sisteme të ndryshme operative, Telefonat shumë të ndryshme me hardware të ndryshme running Android të gjithë në të njëjtën kohë, kështu që ky grafik këtu shkon prapa për rreth 6 muaj. Yeah, 6 muaj, dhe ju mund të shihni se si grupi më të errët në pjesën e poshtme është Jelly Bean, i cili doli gjatë verës, dhe ju mund të shihni të drejtë tani ndoshta rreth 2% e telefonave kanë atë. Cream Ice sandviçësh doli më shumë se një vit më parë, dhe një e katërta e telefonave kanë atë. Ka ende një shumë të telefonave që janë duke përdorur versionin e OS nga vjet më parë. Një gjë që Google është përpjekur të bëni për të bërë përvojën e përdoruesit shumë më konsistente Apps është duke filluar me huall mjalti, e cila është version tabletë, atëherë Ice Cream Sandwich dhe Jelly Bean, ata janë me të vërtetë duke u përpjekur të theksoj përdorimin e këtij veprimit bar, e cila është ajo që ju mund të shihni në krye këtu, çdo gjë të drejtë këtu, duke përfshirë edhe këtë pak butonin settings. Kjo është zgjedhja e projektimit. Tani, sa herë që ju shihni 3 dots kjo do të thotë të klikoni mbi këtë, dhe atje do të jetë një drop-down menu, e cila ka disa lloj të settings. Kjo vetëm tregon deri për shkak se unë klikuar këtë buton. Kjo është diçka që ata janë duke u përpjekur për të përdorur për të bërë Apps pak më konsistente të gjithë bordit dhe kështu përdoruesi ka një kuptim më të mirë të përvojës uniforme. Mirë, kështu që në rast se ju nuk e keni bërë këtë tashmë ose në qoftë se ju jeni të shikuar në shtëpi atëherë ju mund të ndiqni këto hapa për të ngritur mjedisin tuaj coding. Ajo do të përfshijë të shkuar në faqen e internetit këtu. Ju mund të Google instalimi Android SDK dhe të ndiqni disa përshkrime atje. Ata t'ju tregojë gjithçka. Ata kanë ju instaloni SDK, shkarko versionin Eclipse Classic, edhe pse, natyrisht, ne jemi në Java coding. Ata rekomandojnë këtë një, dhe pastaj këtë ADT, mjetet Zhvillimit Android, është një plugin që ju të instaluar në errësirë ​​e cila ju lejon për të kanë një përvojë shumë më të strukturuar me Android brenda Eclipse. Kjo do t'ju japë disa interfaces grafike të përdoruesit për dizajnimin e pikëpamjeve, dhe ai do t'ju japë më shumë mbështetje dhe aftësinë për të nisur me emulator dhe të gjitha atë gjë e tillë. Kuadri Aplikimi. Unë dua të flas rreth asaj se si projektet brenda Android janë të strukturuara, dhe pastaj ne do të shkojnë në një shembull të shpejtë, dhe shpresojmë se ju mund të bëni pyetje në çdo moment dhe të ndiheni rehat në fund të saj. Ne kemi disa zhargon të parë. Një aktivitet është si të ekranit që ju shikoni kur ju të nisë një app. Përvoja e tërë është vetë aktiviteti, kështu që ju mund të mendoni për atë si një ekran ose pamje, por kjo është në fakt kodi burim anën e saj. Ne ende e quajmë pjesë aktuale interface e saj një pamje. Kjo është lloj i si se si në pset 7 patëm kontrollues dhe pastaj pikëpamje. Aktiviteti është më shumë ose më pak kontrollues, dhe pikëpamje është ajo që ne jemi duke bërë në drejtim të XML që është e lidhur me atë aktivitet. Fragmente janë diçka që është implementuar në Cream Ice sandviçësh shkuar përpara. Kjo është vetëm një ide të marrë pjesët e mendimit ose aktiviteti dhe të ndarë ato në zona të veçanta në mënyrë që ne mund të të bëjë kodi ynë më i përdorshëm për këto pajisje të ndryshme që ne kemi për të mbështetur, dhe kjo është vetëm një mënyrë e duke u përpjekur për të gjithashtu Faktorin nga kodi më shumë. Shërbimet janë gjëra si sfond duke luajtur muzikë ose drejtime potencialisht të navigimit. Ofruesit e përmbajtjes, këto janë APIs brenda sistemit operativ që ju lejon të hyni të dhënave të përbashkëta të tilla si informacionin e kontaktit, dhe pastaj një qëllimi është diçka që ne do të përdorim kur duam të nisë një aktivitet i ri nga aktivitet tona aktuale. Përshëndetje Android, kjo do të jetë një projekt që ne do të flasim rreth. Unë do të të vërtetë të bëjë atë për ju, dhe pastaj ne do të bëjmë një gjë ku ne të klikoni një buton me një tekst dhe të fillojë një aktivitet të ri. Shumë thjeshtë, por unë dua të shkoj nëpër çfarë do të shkojë në një projekt si ky. Kur ju bëni projektin e ri ju do të shihni brenda Eclipse ka ky projekt i quajtur Përshëndetje Android. Pastaj ka një bandë e tërë e dosjeve këtu. Ato ju jeni të shqetësuar me të vërtetë janë dosje burim, dosje burim, res, dhe në një farë mase dosje libs për bibliotekat. Dhe vetëm kështu ne jemi në të njëjtën faqe me atë në qoftë se keni qenë për të krijuar një projekt të ri, ju mund ta bëni këtë të drejtë këtu, kështu që në qoftë se unë dua ta quaj atë HelloAndroid, dhe pastaj ajo automatikisht bën një bandë e tërë e informacionit për ne. Emri paketë është menduar të jetë një identifikues unik që normalisht do të jetë e lidhur me faqen e internetit, nëse keni pasur një të tillë. Për shembull, unë do ta thërrasë këtë net.cs50.helloandroid. Dhe unë tashmë e kanë bërë këtë projekt një herë. Mirë, më vjen keq. Le të thërrasë atë HelloCS50. Dhe atëherë ajo do të kërkojë gjëra të tilla si çfarë lloj të ikonës duam për të bërë. Kjo është e gjitha për shkak të ndërfaqes Android Developer Tools, plugin që ne të shtuar në Eclipse, kështu që ne mund të zgjidhni gjëra të tilla si ajo ikona ne duam, dhe se do të shkojë në atë thellësi, nëse ne duam. Por në fund, vetëm të bëjë projektin, dhe çdo gjë tregon deri të drejtë këtu. Siç kam treguar në ekran tjetër, ne kemi dosje burim, dhe unë do të flas në lidhje me atë që të gjithë kjo do të thotë së shpejti, por ju mund të shihni se menjëherë ajo na merr në ekran HelloCS50. Ka disa butona mbi këtu për të shtuar tekstin dhe teksti Layouts në terren. Është lloj si XCode, por për fat të keq jo aq i efektshëm. Por clips do të jetë mik i juaj dhe ADT në veçanti për të bërë këtë. Mirë, dosje burim është vendi ku Java dosjet janë mbajtur, dhe kjo është në të vërtetë fillimin e programit tuaj. Kjo është në thelb si kontrolluesit. Dosje burimeve ose res është ajo ku ne do të vazhdojmë Layouts ekran, imazhe, tinguj, tekst, animacion dhe çdo gjë tjetër, libs, natyrisht, bibliotekat. Dhe Manifest, kjo është mënyra se sistemi Android di si për të bashkëvepruar me app tuaj. Ajo tregon atë në lidhje me lejet dhe çfarë aktivitete të vërtetë do të kandidojë. Kjo është e gjitha informacion thelbësor që është e nevojshme për të drejtuar app tuaj. Kjo dosje është burimi-në qoftë se ne të zgjeruar atë si ju mund të shihni të drejtë këtu. Dhe një shembull që do të shikojmë një kod-ky është kodi default. Si ne e quajti atë, MainActivity. By default, ne kemi marrë onCreate, i cili është një funksion që është thirrur kur ky aktivitet ngarkesa, kështu që ju doni të telefononi onCreate (savedInstanceState). Kjo do të rivendosë çdo pjesë të informacionit në rast se app ishte ndaluar. Nuk është një e tërë jeta aktivitet cikli tabelë të cilat ju mund të shikoni në kur ju merrni një pak më në thellësi në të, por vija më e rëndësishme e kodit ekziston ky funksion setContentView e cila do të ngarkesës skedarin burimor për layout. Atëherë çfarë onCreate këtu në thelb është bërë është ajo e thënë kur kam krijuar këtë aktivitet që unë dua të ngarkesës këtë layout. Dhe ne do të flasim rreth asaj se layout është në një të dytë. Në qoftë se ne ishim të nisur që këtu ajo duket tamam si kjo, dhe nga default Eclipse, sepse ne kemi bërë këtë dhe ADT bërë atë për ne kjo është e gjitha kod Boilerplate që është krijuar për ne, dhe ne mund të lëvizë dhe të ndryshojë gjërat siç na pëlqen. Dosje burim, si thashë, ky është vendi ku ne të mbajë të gjitha Layouts, drawables në drejtim të ndonjë lloj të imazheve- ata janë quajtur drawables-dhe pastaj fotografi të shëndoshë, menutë. Kjo është një mënyrë e një bandë e tërë e XML në një mënyrë të bukur renditura. Siç mund ta shikoni, ka shumë. Hdpi, ldpi, mdpi dhe dosjet xhdpi për drawables. Këto janë të ndryshme densiteti pixel ekran, kështu densitet të lartë për inç, densitet të ulët, dendësi të mesme, dendësi të lartë ekstra. Kjo është, përsëri, kështu që ne mund të mbështesë të gjitha këto pajisje të ndryshme, dhe ideale, ju do të keni imazhe të ndryshme për çdo rezolutë të ndryshme. Layouts janë ku ne të përfshijë të gjitha Layouts të ndryshme që do të përdoren në aktivitete të ndryshme. Ata gjithashtu mund të përfshijë Layouts për fragmente, që do të thotë aktiviteteve të pjesshme në thelb. Nëse ju doni të bëni diçka të ftohtë si kur ju rrotullohen në telefon ju dëshironi që ajo të ketë një plan urbanistik të ndryshme ju mund të bëni faqosje peizazhin-si një dosje të ndryshme, Android dhe automatikisht ka një bandë e tërë e këtyre rregullave brenda dosje burimeve, kështu që do të dini të shikoni në dosje të ndryshme bazuar në setup aktuale e telefonit, çfarë lloj të pajisjeve që ju jeni duke përdorur. Në mënyrë të ngjashme, kjo vlera-v11 këtu dhe vlera-v14 dhe vlerat e prezgjedhura kjo dosje është për- mirë, vlerat në vetvete, kjo do të jetë Vlerat e nënkuptuara nëpër të gjitha versionet e sistemit operativ. Nga ana tjetër, v11 v14 dhe korrespondojnë me huall mjalti dhe Ice Cream Sandwich, respektivisht. Përsëri, këto janë mënyra se-brenda këtyre dosjeve janë vargjet e ndryshme dhe stilet, kështu që ju mund të rregulloje pamjen e app tuaj ose potencialisht edhe funksionalitetin e saj, edhe pse kjo ndoshta do të jetë një ide e keqe, bazuar në versionin e sistemit operativ. Dhe kam biseduar në lidhje me gjithë këtë këtu. Përsëri, drawable, të papërpunuara,, faqosje vlerat. Defaults, nëse ne do të shkojmë në Android ose Përshëndetje Përshëndetje CS50 Right Now ajo do të duket vetëm si kjo. Ajo do të thonë hello botë. Si ju mund të shihni të drejtë këtu me tekst Android teksti tekst për këtë pikëpamje, e cila është në thelb vetëm një etiketë, është ajo që ne do të thërrasë atë në IOS. Ajo ka këtë simbol qesharak @ string / hello_world. Kjo është kështu që ne mund-ne përpjekje për nxjerrjen e të gjitha vargjet, të gjithë e hard-coded strings në Android në një dosje të veçantë, cila ndodh të jetë në values.strings. Nëse ne shikojmë këtu, ne mund të shohim se kemi një varg të vështirë-koduar ruajtur këtu për botë Hello, dhe është quajtur bota hello, dhe kjo është lloj i një Vendimi i zakonshëm dizajn nëpër shumë platforma që ju doni të- vargjet janë lloj i gjërave që ne duam të jetë potencialisht në gjendje të ndryshojë. Ne nuk duam të kontrollojmë F në dosjen kod burim tonë në XML tonë. Ne duam që të jenë në gjendje për të ndryshuar këtë sa herë që ne të merrni shans. Ky skedar XML, strings.xml, është një mënyrë e nxjerrjes hard-coded vargjet që do të jetë ndryshe në burimet tona faqosje ose në kodin tonë burimor. Manifestin është ajo ku ne mbajmë këtë informacion thelbësor në lidhje me aplikimin. Ai përfshin emrin e paketës. Kjo duhet të jetë një identifikues unik. Ndryshe nga App Store për iOS emrat e aplikimeve nuk duhet të jetë unike, dhe ju në fakt mund të ndryshojë emrin e aplikimit tuaj pasi të keni të paraqesë atë, kështu që në qoftë se unë të fillojë me Birds Angry, dhe pastaj unë të bëjë një update, dhe unë nuk dua për lirimin e një version të ri I guess I mund të telefononi atë Angry Birds 2, ndërsa unë jam në ciklin e lirimit të njëjtë. Kjo vetëm do të shfaqen si një update. E vetmja gjë që duhet të jetë unike është ky emri i paketës, cilat shumë njerëz nuk do të shohin. E pra, ju do të shihni vetëm në qoftë se keni qenë në kërkim në kodin burimor ose në qoftë se ka disa lloj të gabimit. Komponentët përfshijnë aktivitete, kështu që ne duhet të deklarojë çdo lloj aktiviteti ne përdorim. Kjo është një lloj leje e tillë. Android sepse nuk e kanë këtë proces rigoroz të aplikimit për dorëzimin e Apps në vend të kësaj ata vetëm bëjnë gjithçka bazuar jashtë e lejeve dhe duke deklaruar gjërat në manifest. Versioni SDK është gjithashtu i rëndësishëm. Ne mund të vendosni të përdorni si version diçka minimale SDK. Natyrisht, ju dëshironi për të krijuar kodin dhe të projektimit për sistemet operative më të reja. Ndoshta jo më i ri, ndoshta jo Jelly Bean. Ndoshta ju doni për të hartuar kryesisht për Ice Cream Sandwich, edhe pse ata janë shumë e shumë të njëjtë në aspektin e vendimeve të projektimit dhe bibliotekat aktuale dhe APIs. Por në vend se të ketë njerëz i origjinal Android version-si Donut mënyrë mbrapa kur- të cilët ende ndodh të jetë duke përdorur që përpiqen për të shkarkuar aplikacionin tuaj dhe pastaj thonë ajo nuk punon në telefonin tim ju mund të vendosni versionin minimal dhe e kanë atë të jetë Gingerbread apo Ice Cream Sandwich ose çdo gjë që ju mendoni Dorëzimi rehatshme. Dhe ky është një shembull i qartë. Ne mund të shohim në një aktuale në një grimë. Mirë, ne vetëm do të shkojë përpara me demo tani. Kjo është demo në qoftë se ju të ndërtuar Google Android app tuaj të parë ose diçka të tillë. Ne do të shkojnë nëpër çdo gjë që po ndodh në atje, dhe të vjen keq, vetëm për një referencë të cilët këtu e di Java në ndonjë masë? Mirë, kështu që Java është gjuhë e re coding për shumicën e njerëzve që vijnë nga CS50. Shkurtimisht, për të shkuar përsëri atë që ajo thotë këtu, ajo që ne duam të bëjmë është më tepër se sa përshtateni këtë kërkesë Hello World se e gjithë kjo nuk është ajo nis dhe ajo thotë se bota përshëndetje dhe ai thotë përshëndetje CS50 në krye, sepse kjo është emri aktiviteti ne jemi duke shkuar në përpjekje për të bërë një fushë të tekstit dhe një buton kështu që kur ne të shtypni këtë buton ajo do të marrë tekstin nga fushën e tekstit dhe të fillojë një aktivitet të ri, dhe kjo do të thotë çfarëdo që teksti thënë në aktivitet, dhe kjo është relativisht e thjeshtë. Kjo nuk është shumë interesante. Ju nuk do të duan për lirimin e ndonjë app si kjo. Por kjo tregon disa gjëra të rëndësishme të projektimit. Ne do të duhet për të bashkëvepruar me manifestin, me fotografi layout, me kod burim, dhe ju mund të shihni se si për të nisur një aktivitet nga një tjetër. Ne do të fillojë me paraqitjen për aktivitetin tonë të parë, Unë e di që kjo është lloj i vogël, por si ju mund të shihni të drejtë tani, të gjitha ajo është është ajo ka logon tonë që kemi krijuar, emri i aktivitetit, dhe ai thotë botë Hello në qendër. Në vend të kësaj, unë jam i pari duke shkuar për të bërë këtë në një plan urbanistik lineare, një plan urbanistik të afërm, dhe këto janë të gjitha gjërat ju mund të shikoni lart dhe janë me vlerë do mbi në disa pika në drejtim të Layouts. Kjo është një shumë si HTML. Ne tha se kjo nuk është e vërtetë vlen të ditur në aspektin e kuptimin programor, por ka Layouts kaq shumë të ndryshme që ju mund të kontrollit, dhe kjo është vetëm si CSS në aspektin e stileve. Ka shumë ndodh vetëm në aspektin e estetikë këtu, Dhe vërtet, kjo është me vlerë të mësuarit, por kjo është lloj i gjë që ju duhet të shikoni lart si ju shkoni dhe ju ndjeheni si ju keni nevojë për diçka të re. Unë mund të përfitojnë nga disa prej mjeteve ADT këtu të paktën për të nisem me. Unë do të bëjë një fushë të tekstit, dhe unë do të bëjë një buton. Vendos ata të drejtë tjetër për njëri-tjetrin. Ata tashmë resize përshtatshme. Na vjen keq, përsëri, vijnë me diferencën midis shtrirjes lineare dhe layout relative, një plan urbanistik linear jep funksionalitetin e një pak më shumë në aspektin e plotësimit hapësirë ​​dhe duke u siguruar ne pozicion gjëra horizontalisht apo vertikalisht. Dallimi i madh mes një plan urbanistik lineare dhe një faqosje të afërm është relative pozicionet faqosje gjithçka në lidhje me pikëpamjet e tjera, dhe gjëja më e mirë për këtë është se ajo merr më pak kohë për të nxjerrë shkak të sistemit operativ duket në të gjithë kodin dhe thotë se kjo shkon relative për këtë këtu, këtu. Kjo do të thotë ajo bën matje më pak se një bandë e tërë e Layouts mbivendosur lineare, të cilat unë do të duhet të bëni nëse kam kërkuar gjërat të shkojnë vertikalisht këtu. Unë tashmë kam disa gjëra shkojnë horizontalisht, kështu që unë do të duhet një plan urbanistik të ndryshme lineare në folenë e tyre së vertikalisht, por në qoftë se unë ishin duke bërë një plan urbanistik të afërm unë mund të them mbani këtë në të majtë, kjo në të djathtë dhe këto gjëra poshtë. Por për shkak se unë dua që ata të mbushin tani unë jam duke shkuar për të përdorur një plan urbanistik lineare, dhe ju mund të shihni se tashmë e bën një shumë prej këtyre gjërave për ne. Gjitha vështrimet duhet të keni një pronë e gjerësi dhe lartësi, dhe kjo ndodh që të ketë një peshë prej 1, dhe kjo ka një peshë prej 1 në mënyrë që ajo mbush tërë hapësirën. Por gjerësia dhe lartësia e tij janë më të rëndësishme. Kjo fushë ID drejtë këtu nuk është e rëndësishme brenda layout aktuale nëse ne jemi duke përdorur një plan urbanistik të afërm dhe duke thënë se ne mund referencë një pozicion pikëpamje në lidhje me një tjetër. Nëse do të kishim një plan urbanistik të afërm mund të themi se ky pozicion poshtë këtë një ose mbi këtë ID, ID, por kjo do të jetë e rëndësishme kur ne jemi duke e përdorur atë në kodin tonë, sepse ne mund referencë këto pikëpamje individuale në këtë mënyrë. Dhe pastaj ju mund të shihni requestFocus tag, e cila është diçka që ju ndoshta e pa në pset 7. Nuk ishte një auto fokus tag ose diçka në këto linja për njërën nga fushat. Dhe një gjë, natyrisht, ne mund të bëjmë ashtu si në HTML, dhe njoftimi një nga gjërat e bukur rreth ADT është se ajo autocompletes këtu. Ndoshta jo si bukur si ajo e bëri në XCode, por ajo e bën megjithatë, dhe ne mund të themi aluzion dhe pastaj t'i jepte një lloj i vargut doja shkruani një mesazh, dhe në qoftë se unë jepte një moment, edhe të vëreni se unë të marrë një gabim të vogël këtu duke thënë se ne duhet të përdorni një burim string për këtë, kështu që në qoftë se unë le të bëjë disa punë e vështirë për mua Unë mund të zgjidhni këtë varg, të bëjë refractor Android dhe ekstrakt string Android. Unë mund të jepte atë emër, shkruani një mesazh, dhe atë që ka tani është ai zëvendësoi atë varg hard-coded me një referencë të vargut in. dosjen vargun e xml, që do të thotë tani kjo është këtu. Dhe unë e di se duket pak e punë të parëndësishme dhe si shtesë në këtë pikë, por kur ju keni një bandë e tërë e gjërave, një bandë e tërë e vargjeve, kjo është me të vërtetë e rëndësishme, dhe veçanërisht për lokalizimin sepse siç e përmenda më parë, Android është një sistem shumë i përdorur globalisht operativ që ju thjesht mund të bëni vlera-en apo vlera-sp ose diçka për gjuhët anglisht ose spanjisht ose të tjera. Dhe pastaj ju ndoshta nuk e kanë pasur këtë përvojë ende pasi ne nuk e ka bërë JavaScript shumë në drejtim të programimit web, por ne gjithashtu mund të bëjë këtë fushë që quhet onClick për butonin, dhe kjo është një mënyrë për referenca brenda shtrirjes sonë se ne duam një funksion të caktuar për t'u quajtur në kodin tonë burimor. Unë jam duke shkuar për të thirrur këtë sendMessage, dhe në mënyrë që të bëjë këtë punë që do të thotë në aktivitetin kryesor këtu Unë do të duhet për të krijuar një funksion që është publik kështu që ajo mund të arrihen nga layout. Është i pavlefshëm për shkak se ju thjesht nuk duan që ajo të kthehet çdo gjë. Ne do të thërrasë atë sendMessage, dhe kjo merr një pamje, cila eshte nje lloj i kuadër se ne mund ankoruar këtë metodë në atë pikëpamje individuale kur ne xhironi atë. Dhe unë nuk e di nëse keni vënë re-mirë, ju nuk do të keni vënë re, por në këtë pikë të drejtë këtu kjo pikëpamje është një tip që ende nuk është përfshirë, dhe natyrisht, ju të gjithë e dimë nga CS50 për të mos përfshirë lloje. Gjë e bukur për Eclipse IDE si është se në qoftë se ju harroni që të përfshijë një lloj ajo do të theksojë me një të kuqe pak squiggly dhe pastaj ju japin mundësi për të importuar pamje. Një mënyrë e shpejtë për të bërë është që kontrolli ndryshim O, dhe ajo do të importojë të gjitha dosjet që ajo ka nevojë për të. Tani që ne kemi këtë sendMessage funksion, e cila do të dërgojë mesazh nga MainActivity në një aktivitet të ri, ne jemi duke shkuar për të duhet të përdorni një qëllim për të nisur këtë aktivitet të ri nga një, kështu që ne ndoshta do të duan të krijojnë një konstante globale apo edhe një konstante sidomos publik që do të na ndihmojnë të dimë se si ne jemi duke shkuar për referencë string sepse kur ne krijojmë një qëllim ne nuk jemi vetëm duke e quajtur një aktivitet të ri, por ne gjithashtu mund të jepte një pako e informacionit. Një pako është në të vërtetë termi që përdor Android, dhe kjo është një mënyrë për të thënë jepte të dhëna shtesë, të cilat ajo nuk mund të jetë i një lloji shumë të sofistikuar të të dhënave, por ne mund të patjetër të përfshijnë booleans ose strings ose ints. Kjo gjë e tillë. Ndjehen të lirë për të pyetur në lidhje me ndonjë prej këtyre eleminatoreve këtu, publik, i formës së prerë, statike. Publik është e rëndësishme. Kjo do të thotë që ne mund të hyni në këtë variabël nga dosjet e tjera kodin burim të tilla si kur ne krijojmë një aktivitet të ri. Ne mund referencë string brenda kësaj dosje. Nëse kjo është private, kjo do të thotë se është e kufizuar tek kjo skedë individual këtu. Por ne do të quajmë këtë si diçka të mesazhit ekstra. Tani ne kemi bërë këtë funksion, dhe në qoftë se ne të klikoni butonin, ky funksion do të quhet. Por ne nuk kemi bërë asgjë, natyrisht, me funksionin. Ajo që ne duam të bëjmë tani është të krijojë një aktivitet të ri, aktivitet që në fakt do të jetë nisur. Në Eclipse ne mund të themi të re aktivitet, Android, aktivitet bosh. Ne mund t'i jepte një emër. Le të thërrasë atë aktiviteti ynë rezultat. Dhe pastaj kjo fushë hierarkike prind është një mënyrë për të specifikuar se aktivitetet janë të lidhura me njëri-tjetrin. Sepse kjo do të jetë nisur nga aktivitet tjetër ne duhet të saktësojmë se ka aktivitet kryesor prind. Dhe unë mund të keni klikuar mbi fushën e ardhshme atje, e cila do të na kanë thënë disa fusha opsionale që ai ishte gjithashtu duke përfshirë, por gjëja më e bukur në lidhje me ADT, përsëri, është se në qoftë se unë lëviz poshtë këtu në manifestin e mbani mend se e gjithë kjo me të vërtetë është përfshirë nga default kur ne fillimisht krijoi projektin, dhe tani, sepse kemi përdorur këtë krijoni një aktivitet të ri në vend se vetëm duke shtuar se vetë dosjen tonë të klasës, sepse ne shkuam përmes GUI e tyre për të bërë këtë shtoi ajo tashmë e gjithë kjo të qarta për ne, që thjesht do të thotë se tani sistemi operativ nuk do të ankohen kur ne përpiqemi për të nisur këtë aktivitet. Dhe ai gjithashtu, natyrisht, i dha atij një etiketë, e cila gjithashtu tregon deri në vargjet. Ajo ka një shumë të gjëra në fund mbrapa për ne. Gjithsesi, tani që ne kemi këtë aktivitet të rezultojë si i mirë, aktuale kodin source file në dosje burim, dhe ju mund të shihni-të prek shkurtimisht mbi këtë- sepse ne tha ajo në lidhje me këtë prind hierarkik ajo i dha këtë fushë android.r.ide.home në këtë gjë onOption përzgjedhur. Çfarë kjo në thelb është thënë është se ka një buton menu tani se në këndin e sipërm të majtë të ekranit në qoftë se unë kthehem në PowerPoint, ku ne së pari të biseduar rreth veprimit bar për shkak të prindit hierarkik tani ka një shigjetë pak mbrapa këtu dhe kjo është e klikueshme kështu që ne duhet të jetë në gjendje të pas-ne fakt e drejtuar këtë app- shkoni mbrapa, dhe kjo është një mënyrë e kursimit të na pak e kodit atje. Tani brenda kësaj-mirë, ajo duket të jetë ankuar në lidhje me atë për një moment. Le të komentojnë se jashtë. Tani, në mënyrë që në fakt të bashkëvepruar me këta 2 aktivitete, ne kemi për të krijuar një qëllim i cili i përfshin të gjitha këto të dhëna. Në sendMessage tani unë jam duke shkuar për të lundrimit nëpër disa copa të kodit dhe të shpjegojë se si të shkoj. Një qëllim, siç thashë, është një mënyrë për të nisur një aktivitet nga një tjetër. Qëllimi është lloji. Ne jemi duke krijuar një myIntent ndryshueshme. Dhe kjo është në fakt një objekt, e cila është arsyeja pse ne kemi për të thirrur të ri. Është e zakonshme përdorimi Java atje, e cila mund të marrë një grimë të vogël e duke u përdorur për të. Kjo do të thotë ne jemi duke përdorur veprimtarinë ose MainActivity klasë, dhe qëllimi në këtë mënyrë merr veprimtarinë ajo që shkon nga dhe veprimtaria ajo do të, të cilën ne e quajmë ResultActivity, dhe që është klasë e vet. Përfshi se. Dhe pastaj siç e përmenda më parë, ne dha atë ID në fushën e tekstit edit dhe pamje teksti, kështu që në mënyrë që të programuar të kapur teksti që ekziston në editText ne e përdorim këtë funksion të quajtur findViewByID, e cila është e ngjashme me diçka që ju do të përdorni kur duke u përpjekur për të marrë arat nga DOM. Ndoshta David bisedimet për këtë në leksion. Por kjo është vetëm një mënyrë për të marrë ato-kjo është arsyeja pse ne tag këto gjëra me ato fusha. Id.editText1. Ajo është tashmë autocompleting për mua atje. Dhe pastaj ne do të përfshijë gjithashtu-editText këtë tani që ne kemi në fushë brenda programit tonë, gjithçka që ishte në thelb ka findViewByID ju mund të mendoni për atë si të na japë një referencë ndaj atij editText. Tani ne duam të marrë string ose mesazh brenda asaj editText të cilat ne mund të bëjmë duke përdorur- ju mund të mendoni editText si një struct- ne e quajmë atë një objekt në Java-me një bandë e tërë e metodave të ndryshme ose fusha dhe atributet bashkangjitur. Kur unë them editText. kjo më jep mundësinë për të hyrë në një metodë e tillë si getText, e cila do të marrë tekstin e tanishme në atë editText dhe pastaj të kthyer që në mënyrë eksplicite për një varg, dhe ne kemi ruajtur mesazhin. Tani ne të vërtetë duan të bëjnë diçka me atë qëllim ne krijuar vetëm çaste më parë. Unë do të vënë ekstra siç është quajtur në qëllim, e cila, përsëri, si kam thënë më parë, kjo është një mënyrë e krijimit pako me një bandë e tërë e të dhënave. Mesazhi Extra është tag tonë kështu që ne e dimë se çfarë jeni të shpëtuar këtë nen, dhe atëherë unë jam i përfshirë mesazhin. Dhe atëherë ne në fakt mund të fillojnë aktivitetin duke i dhënë asaj myIntent parametër. Dhe kjo në fakt do të nisë aktivitetin, kështu që tani që unë upgraded to Windows 8 mund të ketë disa gabime që shfaqen shkurtimisht, por të përpiqet të injorojë ato. Dhe kjo është emulator Android. Shpresojmë kod të vërtetë do të pop-up në një moment. Përsëri, duke injoruar të gjitha ato gjëra të vogla. Por Android emulator ju mund të matem çdo version të sistemit operativ nga ato më të hershme, Donut, Gingerbread. Kjo është Jelly Bean 4.1. Por si ju mund të shihni të drejtë tani, kjo është diçka që kemi bërë. Kjo ka MainActivity, editText, button. Unë mund të shkruani diçka këtu, por çfarë jemi duke humbur në këtë pikë? Ne kemi bërë fushën në MainActivity që do të dërgoni mesazh për aktivitetin tjetër, por në këtë pikë ne nuk kemi bërë asgjë në aktivitetin tjetër, kështu që ajo nuk do të marrë asgjë. Le të përfundojë deri atë pjesë para se të lëvizë. Ky aktivitet rezultat, ajo që ne do të duhet të bëni është që ne do të duhet të bëni është që ne do të duhet për- ne gjithashtu mund të referencës qëllimin brenda këtij aktiviteti, kështu që ne kemi për të kapur të qëllimit, e cila është me të vërtetë të thjeshtë. Kjo është një funksion të përfshira në klasë aktivitetit, kështu që ne mund të them vetëm "Merr mesazh nga qëllimit." "MyIntent Intent = getIntent." Dhe kjo do të na japin-myIntent tani është një objekt, cila eshte nje referim te qëllim që çuar na te kete aktivitet. MainActivity thërret dhe i jep informacion shtesë të rezultojë aktivitet. Aktiviteti rezultat tani duket në synimin që çoi atë këtu, dhe ne mund të hyni mesazhin që kemi krijuar në një tjetër, getStringExtra, dhe kjo do të autocomplete për mua. Dhe pastaj mos harroni, mënyrën se si ne tagged se pak e të dhënave ishte duke i dhënë atë në këtë fushë të drejtë këtu, në këtë varg publik, e cila është tag për vargun ne fakt përfshira. Nëse unë them MainActivity.Extra_Message ajo është e drejtë atje, dhe kjo është lloj i si parameter emrin kur kaluam kodin nga kontrollues në template, kur ne do të themi diçka shigjetë titullin. Është i njëjti lloj ideje atje. Tani, mos harroni këtë. Ne gjithashtu e kishte krijuar këtë auto ose auto gjeneruar kodin për aktivitetin e rezultatit, e cila përfshin mendimin e tekstit në mes që thotë se bota përshëndetje. Ne potencialisht mund të bëjë që të madh. Le të bëjë atë të parë. Ne mund të bëjë atë 40 pixels densitet të pavarura. Le të shohim, kjo është super i madh. Kjo do të jetë në rregull. Dhe pastaj në mënyrë të referimit këtë pikëpamje individuale teksti brenda kodit tonë ne do të duhet për të dhënë atë një ID, dhe në mënyrë që të bëjë që ne themi @ + id, që do të thotë që ne të caktojë atë ID. Nëse ne vetëm tha id @ ajo do të supozojmë që ne jemi duke iu referuar një letërnjoftim që tashmë ekziston, dhe le ta quajmë këtë resultTextView tonë. Dhe vini re se në XML nuk ka nevojë për pikpresje ose asgjë. Gjithçka është brenda këtyre tags. Është shumë i ngjashëm me HTML në një shumë të shqisave. Ajo merr pak duke u përdorur për të, por në fund ju do të ndiheni goxha rehat me të. Le të rinovuar tekst për synimin e tekstit tonë rrjedhojë, dhe siç bëmë kur ishim gjetjes se fushën e tekstit redakto në aktivitet tona të tjera në MainActivity këtu ne gjithashtu do të njëjtën gjë- ne do të gjeni pamje nga ID. R Dhe, në rast se unë nuk e kishte përmendur këtë më parë, është referencë në burimet dosje tonë, dhe pastaj ID është një referencë për çdo gjë në dosjen e burimeve, të gjitha IDS, dhe resultTextView. Dhe ashtu si më parë, resultTextView është një objekt, që do të thotë ajo ka të gjitha këto veti të lidhen me të. Kur ne përdorim getText për tekstin redakto për këtë fushë tekst ose tekst view ne mund të përdorni të vërtetë setText, dhe pastaj ne tashmë gjetur mesazhin nga qëllimit, kështu që unë mund të them mesazh, dhe kjo do të vërtetë të vendosur mesazh. Është marrë një moment për të nisur, dhe pastaj ne mund të shohim nëse janë apo jo ajo crashes, por çdo pyetje në lidhje me këtë proces të drejtë atje, se lloj i ndërveprimit? Në shumë mënyra kjo është drejtpërdrejtë. Arsyeja që unë jam duke shkuar nëpër diçka relativisht e thjeshtë është, përsëri, sepse ju merrni për të parë ndërveprimin në mes layout, kodi burim, se si ju gjërat e referencës dhe ndoshta të marrë një ekspozim të vogël për sa Java punon atje. Në qoftë se unë në fakt shkruani diçka në këtu, si ohai, dhe pastaj klikoj butonin, ajo nis një aktivitet të ri, dhe se pikëpamja teksti thotë ohai. Kjo është shumë e thjeshtë, por shpresojmë se pas asaj shembull ju lloj i shihni se si punon ky ndërveprim, dhe tani që rrëmujë e dosjeve në anën e majtë për të gjitha këto dosje të projektit, shpresojmë se ju e dini ku mund të shikojnë tani. Kjo është kodin tuaj burim zonë. Layout është me të vërtetë e vetmja gjë që ju do të merret me të derisa ju të përfshijnë imazhet dhe drawables apo çfarëdo, dhe vlerat, që do të përfshijë strings, siç kemi përmendur, dhe pastaj stilet është diçka që është lloj i si CSS. Trajtuar atë kur ju doni, por deri sa ju të ndiheni rehat me duke shtuar dhunti shtesë për aplikimin tuaj nuk ka nevojë për t'u shqetësuar në lidhje me atë shumë. Vetëm të përfundojë një gjë tjetër që ju patjetër do të dëshironi që të përfshijë- duke supozuar që ju doni të integrohen karakteristika të ftohtë dhe për të shpëtuar veten disa ekstra coding- do të jetë për të përfshijnë bibliotekat 3 partisë. Këtu është pak Android djalë me kapelë Sherlock Holmes. Ky është një bar veprim Sherlock bibliotekë, e cila në thelb do të thotë se bar veprimi patë më herët, e cila tani është standard në Ice Cream Sandwich dhe Jelly Bean, në qoftë se ju doni të sjellë atë lloj përvojë përdorues për përdoruesit në versionet më të vjetra dhe për të shpëtuar veten nga shqetësuese në lidhje me mënyrën se si përdoruesi është duke shkuar për të lundruar në versionet më të vjetra, kur ajo gjë nuk është atje ju mund të përfshijë këtë bibliotekë dhe atëherë ju vetëm keni për referencë-sesa Android parazgjedhur për bibliotekat veprimit bar, ju referencë këtë bibliotekë mbështetje. Gjëra të tilla si Scoreloop, është e madhe në qoftë se ju jeni do të përfshijë një lojë. Kjo ju lejon të shtoni bordet udhëheqës dhe të arriturat për lojëra. AdMob është një mënyrë për të vënë reklama në aplikacionet tuaja në rast se ju doni të bëni një pak të holla off e saj. Sigurisht, nuk është Facebook dhe Twitter për integrimin atje në qoftë se ju doni të ndajnë gjërat lehtë, et cetera. Dropbox, po ashtu, dhe Google Analytics është që ka një tabelë në kërkim. Kjo do të jetë shumë e rëndësishme në qoftë se ju në të vërtetë doni për të parë kush është duke ndërvepruar me app tuaj ose kush është, se si ata ndërveprojnë, et cetera. Google, by default, ju tregon një shumë e statistikave rreth i cili ka instaluar app tuaj dhe çfarë telefonat që ata kanë, çfarë Versione të sistemit operativ që ata kanë. Por në qoftë se ju doni të shihni kush është duke e përdorur atë në baza ditore dhe se si ata e përdorin atë atëherë ju do të dëshironi që të përfshijë një lloj të sistemit të përcjelljes si kjo. Kur të jeni gati për të shpërndarë app tuaj Unë nuk kam nevojë për të shkuar në se në thellësi shumë. Klikoni në linkun këtu, Google Luaj. Ajo përdoret për të jetë tregu Android. Ata del gjithçka me Google Luaj, kështu që tani ju paraqisni për këtë. Është shumë e thjeshtë. Ju duhet të përfshijë një përshkrim, disa screenshots. Ashtu si thashë, nuk ka asnjë proces miratimi si iOS. Dhe ku të shkojnë nga këtu? Unë ju tregoi një shembull të vërtetë të thjeshtë. Shpresojmë se në qoftë se ajo duket tmerrësisht e thjeshtë atëherë kjo është ndoshta një shenjë e mirë. Në qoftë se ju në të gjitha ndjerë pak konfuze ose të pasigurt në lidhje me pikërisht ajo që unë u typing kjo është gjithashtu mirë, por nga këtu shkojnë në Guides Google. Kjo është një vend i madh për të filluar. Ajo do të flisni ju nëpërmjet asaj që ata presin në aspektin e dizajnit të aplikacionit, se si përdoruesit normalisht ndërveprojnë me të. Është shumë më e lirë se sa iOS formë, unë do të them, të cilën ajo duket si shikime tryezë janë të-Unë nuk e di, kjo është buka e tyre dhe gjalpë. Çdo gjë është një pikëpamje tryezë rrëshqitje lart dhe poshtë. Me Android ata patjetër të inkurajuar njerëzit që të shikoni atë nga një bandë e tërë e perspektivave të ndryshme. Kur ju të përfshijë kit Software zhvillimit në këtë ADT nga default ju keni një bandë e tërë e projekteve të mostrës në Android. Të drejtë këtu, Android, Android Projekti Shembull. Nëse unë klikoni mbi atë, atëherë unë mund të zgjidhni një version për të cilin e kampionit të projekteve të aplikuar. Ka një bandë e tërë e gjëra të ndryshme këtu. Ajo fillon me bar përputhshmërinë e veprimit, loja Accelerometer, backup dhe rivendosjen e, Bluetooth, ndërtues gjest. JetBoy është një lojë mostër që do t'ju japin, siç është LunarLander. Ka një bandë e tërë e aplikacioneve mostër këtu, dhe ata janë në shënjestër të gjithë në aspekte të ndryshme të Android API-së, dhe ideja është se si ju bëni kërkesën tuaj ju nuk keni nevojë për të mësuar gjithçka në lidhje me Android për të bërë një app Android. Ju vetëm duhet të mësojnë në lidhje me pjesët që ju jeni në të vërtetë do të përdorin. Shikoni këtyre bibliotekave mostrës. Ndjehen të lirë për të kopjoni dhe ngjisni kodin dhe reapply atë. Kjo është një gjë e madhe që të shikojmë në kodin më të vështirë dhe të përpiqemi për të kuptuar atë, e cila është sigurisht arsyeja pse në CS50 ne shpesh ju jap sasi të mëdha të kodit burimor. Shikoni disa nga këto në qoftë se ju jeni do të përdorin bibliotekat ngjashme dhe pastaj të aplikojnë atë në kodin tuaj. Dhe sigurisht, nuk janë mësime. Kërko për mësime. Kam gjetur një shumë e ato të mira online i cili mund t'ju sjellë deri në shpejtësinë me çfarë fragmente të vërtetë janë dhe se si ju mund t'i përdorë ato. Disa nga këto gjëra të reja të projektimit, si fragmente, ju me të vërtetë nuk duhet të jenë të shqetësuar në lidhje me nëse ju jeni duke e bërë një goxha të madhe në projektin e fushëveprimit. Ata janë të gjëra që Google është duke u përpjekur për të fazën in StackOverflow është sigurisht miku juaj. Shpresojmë që unë ju shitur një grimë në Android, realizimin e kjo është shumë më e lehtë për t'iu qasur vetëm në aspektin e gjuhës kodim. Java është unë do të them shumë më e lehtë për të kuptuar se sa Objektivi-C. Android po rritet Unë mendoj se shumë më tepër se iOS. Unë do të thotë, të dhënave është atje, mënjanë nga ajo që unë mendoj. Ajo do të jetë rreth për një kohë, dhe ata janë disa vjet prapa në drejtim të cikleve të tyre të projektimit, kështu që kjo është lloj i kuptueshme se ata janë ende duke punuar me disa nga këto pyetje logjike, si ky veprimit bar është një gjë e re për ta ende, lloj i krijimit përvojë të ngjashme përdoruesit në të gjitha Apps e tyre. Shpresojmë që ju mund të shkoni përpara dhe të hapur deri tani Eclipse dhe të bëjë Apps tuaj Android. A ka dikush ndonjë pyetje para se të përfundojë deri në lidhje me ndonjë gjë? Unë mund t'ju them se përgjigja është 42. E pra, të gjithë të lumtur kodim, dhe fat të mirë. [CS50.TV]