[Powered by Google Translate] [Seminar] [Android Apps (Jetzt mit Jelly Beans!)]
[Jordan Jozwiak] [Harvard University]
[Dies ist CS50.] [CS50.TV]
>> Hallo an alle, und willkommen in der Android Apps (Jetzt mit Jelly Beans!) Seminar.
Jetzt ist es mit Jelly Beans genannt, natürlich, weil
die neueste Version des Betriebssystems heißt Jelly Bean.
Wenn ich sprach über Android im letzten Jahr und tat dieses im Grunde gleiche Seminar
Ich präsentierte die Design Patterns und stilistische Auswahl für Lebkuchen,
obwohl Ice Cream Sandwich hatte zu der Zeit kommen,
und das ist etwas, worüber wir in Zukunft ein wenig zu sprechen.
Android, hat natürlich einige Probleme mit der Fragmentierung,
so die neueste Google-Betriebssystem ist in der Regel
nicht wirklich, sich unter den Nutzern gemeinsam für potenziell bis zu einem Jahr, leider.
>> Aber abgesehen, dass wir über viele Gründe, warum reden
Android ist viel besser als iOS.
Okay, werden wir über Android gegen iOS sprechen,
einige Design-Paradigmen, wie Sie in nur eine Folie werde fertig,
und der große Unterschied zwischen diesem und letzten Jahr ist, ich will nur
zoom durch einige konzeptionelle Dinge Arbeit mit
das Betriebssystem und dann in ein wirklich einfaches Beispiel gehen.
In der Tat, nur das Beispiel, dass Google beschreibt für den Aufbau Ihrer ersten App
und wir durch ihn zusammen gehen und einfach zu beschreiben.
>> Ich weiß, viele von Ihnen haben nur in C codiert, so Java ist bereits sein wird
eine andere Perspektive, und diese Weise können Sie Ihre Füße bekommen werde nass
und fühlen sich ein wenig mehr Komfort mit sich hoffnungsvoll.
Eine kurze Zusammenfassung, Android gegenüber iOS.
In Android gibt es diese einmalige Entwickler in Höhe von $ 25,
keine dieser 100 Dollar pro Jahr, was.
Es gibt keine Einschränkungen, was bedeutet, dass, wenn ich will, um eine App einreichen,
Ich habe gerade eintragen, und es gibt keinen Genehmigungsprozess wie es für iOS.
Sie lernen mit Java entwickeln mit Eclipse,
das ist Cross-Plattform, so dass es keine Rolle, ob Sie einen Mac haben,
Windows-oder eine Linux-Maschine.
Natürlich mit iOS muss man XCode auf einem Mac zu verwenden,
und Android wird von viel mehr Menschen genutzt,
Wenn Sie also wollen, dass Ihre App auf irgendeine Art von Sichtbarkeit oder vielleicht haben
ein wenig Geld aus der Werbung
du bist wahrscheinlich eher von Android profitieren.
>> Und eine Sache, die immer über Android ist schon bekannt
ist die extreme Höhe der Anpassung, während iOS ist sehr auf ihre Weise fixiert
so dass sie zur Aufrechterhaltung der Sicherheit und Kontrolle über jede noch so kleine Aspekt
des Designs in ihrem Betriebssystem und den einzelnen Anwendungen.
Android ist sehr freier Form, und es gibt so viel mehr Möglichkeiten.
Okay, einige Design-Paradigmen.
Beachten Sie hier genauso wie iOS hat Tabletten und iPhones und iPod Touches
müssen sie unterstützen, sagen wir, wie ein Dutzend Geräte, wenn Sie unterstützen wollen
historische Dinge.
Mit Android muss man Hunderte von Geräten zu unterstützen,
so gibt es einige Dinge, die Google hat versucht zu implementieren
um die User Experience ein wenig mehr im Einklang,
aber wir werden auch darüber, wie dies bedeutet, dass es Fragen gibt, der Fragmentierung sprechen
dass man ständig bewusst zu sein, unterstützen.
Fragmentierung bedeutet, dass es viele verschiedene Betriebssysteme,
viele verschiedene Handys mit verschiedenen Hardware mit Android alle zur gleichen Zeit,
so dieser Graph hier geht zurück für ca. 6 Monate.
Ja, 6 Monate, und Sie können sehen, wie die dunkelste Band
auf der Unterseite ist Jelly Bean, die sich über den Sommer gekommen,
und Sie können jetzt wahrscheinlich etwa 2% der Telefone es haben sehen.
>> Ice Cream Sandwich kam vor über einem Jahr,
und ein Viertel der Handys haben es.
Es gibt noch eine Menge Handys, die mit OS-Version von Jahren.
Eine Sache, die Google versucht zu tun, um die Benutzerfreundlichkeit zu machen hat
viel mehr konsistent Apps mit Honeycomb ab,
das ist der Tablet-Version, dann Ice Cream Sandwich und Jelly Bean,
sie wirklich versuchen, von dieser Aktion bar zu betonen,
das ist, was man an der Spitze hier zu sehen,
alles richtig hier, darunter dieses kleine Schaltfläche Einstellungen.
Es ist die Design-Auswahl.
Nun, wenn Sie die 3 Punkte sehen, es bedeutet Klicken Sie auf diesen,
und es wird ein Dropdown-Menü, das irgendeine Art von Einstellungen hat.
Dies zeigt nur, weil ich auf diese Schaltfläche geklickt wird.
Das ist etwas, dass sie versuchen zu nutzen, um Apps ein wenig mehr konsistent zu machen
auf der ganzen Linie und so hat der Benutzer ein besseres Gefühl für einheitliche Erfahrung.
>> Okay, also, falls Sie das nicht schon getan oder wenn Sie zu Hause sehen gerade
dann können Sie die folgenden Schritte zum Einrichten Ihres Codeumgebung.
Es wird darum gehen, um der Website hier.
Sie können Google installieren Android SDK
und folgen einige Beschreibungen gibt.
Sie erzählen dir alles.
Sie haben der Installation des SDK, download Eclipse-Classic-Version,
obwohl, natürlich, wir sind in Java codiert.
Sie empfehlen in diesem Fall, und dann dieses ADT, die Android Development Tools,
ist ein Plugin, das Sie installieren in Eclipse, die Ihnen erlaubt,
haben eine viel schlankere Erfahrungen mit Android innerhalb von Eclipse.
Es wird Ihnen einige grafische Benutzeroberflächen
für die Gestaltung der Ansichten, und es wird Ihnen viel mehr Unterstützung
und die Fähigkeit, mit dem Emulator und all so etwas zu starten.
Application Framework.
>> Ich möchte, wie die Projekte im Android strukturiert zu sprechen,
und dann werden wir in ein kleines Beispiel zu gehen, und hoffentlich
Sie können Fragen an irgendeiner Stelle zu stellen und das Gefühl am Ende des es bequem.
Wir haben einige Jargon zuerst.
Eine Aktivität ist wie der Bildschirm sehen Sie, wenn Sie eine Anwendung starten.
Die gesamte Erfahrung ist die Tätigkeit selbst,
so könnte man es als ein Bildschirm oder ein Blick denken,
aber es ist eigentlich der Quellcode Seite davon.
Wir haben noch rufen die eigentliche Schnittstelle Teil davon für eine Aussicht.
Es ist eine Art, wie zB wie in pset 7 hatten wir den Controller und dann die Ansicht.
Die Aktivität ist mehr oder weniger die Steuerung,
und die Aussicht ist, was wir in Bezug auf die XML tun
Das ist mit dieser Tätigkeit verbunden.
Fragmente sind etwas, das in Ice Cream Sandwich für die Zukunft umgesetzt ist.
Es ist nur eine Idee, Teile der Blick oder die Aktivität
und teilt sie in verschiedene Bereiche, so dass wir
machen unseren Code besser nutzbar für viele verschiedene Geräte
, die wir unterstützen, und es ist nur ein Weg, zu versuchen,
auch ausklammern mehr Code.
Dienstleistungen sind Hintergrund Dinge wie Musik oder Navigationsanweisungen potentiell.
Content-Provider, sind diese APIs innerhalb des Betriebssystems
, mit denen Sie gemeinsam genutzte Daten wie Kontaktinformationen zugreifen,
und dann eine Absicht ist etwas, das wir verwenden, wenn wir starten möchten finden
eine neue Tätigkeit aus unserem aktuellen Aktivität.
>> Hallo Android, das wird ein Projekt, dass wir darüber reden werde.
Ich werde tatsächlich tun es für Sie, und dann werden wir etwas tun, wo wir auf eine Schaltfläche klicken
mit etwas Text und starten Sie eine neue Tätigkeit.
Sehr einfach, aber ich möchte zu durchlaufen
was in einem Projekt wie diesem gehen.
Wenn Sie das neue Projekt machen Sie innerhalb von Eclipse zu sehen
gibt es dieses Projekt namens Hallo Android.
Dann gibt es eine ganze Reihe von Ordnern hier.
Die, die Sie wirklich sind besorgt sind die Quell-Ordner,
die Ressource Ordner, die res, und zu einem gewissen Grad die libs Ordner für Bibliotheken.
Und nur so, dass wir auf der gleichen Seite mit, dass
wenn du ein neues Projekt zu erstellen,
Sie können dieses Recht hier zu tun, so dass, wenn ich es zu nennen HelloAndroid wollen,
und dann ist es automatisch macht eine ganze Reihe von Informationen, die für uns.
Der Name des Pakets soll eine eindeutige Kennung darstellen
Das wäre normalerweise mit der Website in Verbindung gebracht werden, wenn Sie eine haben.
>> Zum Beispiel, ich nenne diese net.cs50.helloandroid.
Und habe ich schon dieses Projekts einmal.
Okay, sorry. Nennen wir es HelloCS50.
Und dann wird es Dinge wie, welche Art von Symbol wir machen wollen.
Das ist alles wegen der Android Developer Tools-Schnittstelle,
das Plugin, dass wir Eclipse hinzugefügt, so dass wir Ihnen Dinge wie
welche Symbole wir wollen, und das wäre in dieser Tiefe zu gehen, wenn wir wollen.
Aber am Ende, so stellen Sie das Projekt,
und alles zeigt sich genau hier.
Da zeigte ich auf dem anderen Bildschirm,
haben wir die Quell-Ordner, und ich werde über das, was das alles bedeutet, bald zu sprechen,
aber man kann sehen, dass es sofort uns zum HelloCS50 Bildschirm.
Es gibt einige Tasten hier für das Hinzufügen von Text und Feld-Layouts.
Es ist irgendwie wie XCode aber leider nicht ganz so stromlinienförmig.
Aber die Clips werden Ihr Freund und ADT insbesondere, dies zu tun.
>> Okay, das ist die Quelle Ordner, in dem
die Java-Dateien gehalten werden, und das ist eigentlich der Start des Programms.
Es ist im Grunde wie die Controller.
Die Ressource Ordner oder die Auflösung ist, wo wir Bildschirmlayouts halte,
Bilder, Töne, Texte, Animationen und alles andere, libs, offensichtlich, Bibliotheken.
Und das Manifest, es ist die Art und Weise, dass das Android-System kennt
wie Sie mit Ihrem App interagieren.
Es sagt es über Berechtigungen und welche Tätigkeiten tatsächlich ausgeführt werden.
Es ist alles die wesentlichen Informationen, die notwendig sind, um Ihre Anwendung auszuführen ist.
Der Quellordner ist-wenn wir es erweitern, wie Sie hier sehen können.
Und ein Beispiel dafür, dass ein Code aussehen würde, das ist die Standard-Code.
Wie wir es nannten, MainActivity.
Standardmäßig erhalten wir onCreate, das ist eine Funktion, die aufgerufen wird, wenn diese Tätigkeit Ladung ist,
so dass Sie wollen onCreate (savedInstanceState) nennen.
Dies wird wieder keine Bits von Informationen
im Falle der Anwendung wurde angehalten.
>> Es gibt eine ganze Aktivität Lebenszyklus Tabelle, die Sie sich anschauen kann
wenn Sie ein wenig mehr in die Tiefe in es zu bekommen,
aber das wichtigste Codezeile gibt es diese setContentView Funktion
was wird die Ressource-Datei für das Layout laden.
Und was onCreate hier ist im Grunde tun, ist es zu sagen
wenn ich diese Aktivität zu erstellen Ich möchte dieses Layout laden.
Und wir erfahren, was das Layout ist in einem zweiten sprechen.
Wenn wir starten, dass es hier genau so aussieht waren,
und standardmäßig, da haben wir Eclipse-dies zu tun und ADT tut es für uns
das ist alles Textvorschlag Code, der für uns geschaffen hat,
und wir können weiterziehen und die Dinge ändern, wie wir wollen.
Die Ressource Ordner, wie ich schon sagte, das ist, wo wir alle Layouts zu halten,
zeichenbare in Bezug auf jede Art von Bilder-
sie heißen zeichenbare-und Sound-Dateien, Menüs.
Es ist ein Weg von einem ganzen Bündel von XML in einem schönen sortiert Mode.
Wie Sie sehen können, gibt es. Hdpi, ldpi, MDPI und xhdpi Ordner für die zeichenbare.
Dies sind verschiedene Rasterdichten, so hohe Dichte Pixel pro Zoll,
niedrige Dichte, mittlerer Dichte, extra hohe Dichte.
>> Dies ist, wieder, so können wir unterstützen all diese verschiedenen Geräte,
und idealerweise haben Sie verschiedene Bilder für jede andere Auflösung.
Layouts sind, wo wir all die verschiedenen Layouts, die in verschiedenen Aktivitäten verwendet werden, gehören.
Sie könnten auch Layouts für Fragmente,
was bedeutet Teilaktivitäten im Grunde.
Wenn Sie möchten, etwas cool wie wenn Sie drehen das Telefon zu tun
Sie wollen, dass es ein anderes Layout Sie Layout-Landschaft als einen anderen Ordner tun können,
und Android hat automatisch eine ganze Reihe von diesen Regeln innerhalb der Ressource Ordner
so wird es wissen, um bei verschiedenen Ordnern auf dem aktuellen Setup des Telefons basiert aussehen,
Welche Art von Hardware Sie verwenden.
Ebenso diese Werte-v11 hier und Werte-v14
und die Standardwerte Ordner dies for-
gut, Werte von selbst, wird dies die Standardwerte in allen Versionen des Betriebssystems werden.
Auf der anderen Seite, v11 und v14 mit Honeycomb entsprechen
und Ice Cream Sandwich, beziehungsweise.
Auch dies sind Möglichkeiten, die-in diesen Ordnern sind unterschiedliche Saiten
und Stile, so können Sie das Aussehen Ihrer App
oder möglicherweise sogar seine Funktionalität, obwohl das wäre wahrscheinlich eine schlechte Idee sein,
Abhängig von der Version des Betriebssystems.
>> Und ich sprach über all das hier.
Wieder drawable, roh, Layout, Werte.
Die Standardwerte, wenn wir gehen in Hallo Android oder Hallo CS50 jetzt
es wird nur so aussehen.
Er wird sagen hallo Welt.
Wie Sie hier sehen, mit dem Android Text
der Text für diesen Text gesehen, ist das im Grunde nur ein Etikett,
ist das, was wir würden es in iOS nennen.
Es hat dieses lustige Notation @ string / hello_world.
Dies ist so, wir können-wir alle Saiten extrahieren versuchen,
alle fest codierten Strings in Android in einen separaten Ordner,
was passiert in values.strings sein.
Wenn wir hier betrachten, können wir sehen, dass wir eine hart codierte Zeichenfolge hier gespeichert haben
für Hallo Welt, und es heißt hallo Welt, und dies ist eine Art
gemeinsame Design-Entscheidung auf vielen verschiedenen Plattformen, die Sie-wollen
Strings sind die Art von Dingen, die wir wollen, um potenziell in der Lage sein zu ändern.
Wir wollen nicht zu F in unseren Quellcode-Datei in unserem XML steuern.
Wir wollen in der Lage sein, dies zu ändern, wenn wir die Chance bekommen.
>> Diese XML-Datei, strings.xml, ist ein Weg, der Extraktion
hart codierte Zeichenfolgen, die sonst in unserem Layout Ressourcen wäre
oder in unserem Quellcode.
Das Manifest ist, wo wir diese wesentliche Informationen über die Anwendung zu halten.
Es enthält den Namen des Pakets. Das muss eine eindeutige Kennung sein.
Im Gegensatz zum App Store für iOS die Namen der Anwendungen
nicht eindeutig sein, und man kann in der Tat den Namen Ihrer Anwendung
nachdem Sie einreichen, also wenn ich beginnen mit Angry Birds,
und dann mache ich ein Update, und ich will nicht, um eine neue Version zu veröffentlichen
Ich glaube, ich könnte es Angry Birds 2, während ich auf dem gleichen Release-Zyklus bin.
Es würde nur zeigen, wie ein Update.
Die einzige Sache, die eindeutig sein muss, ist dieses Paket Namen,
die nicht viele Menschen sehen.
Nun, würden Sie nur sehen, wenn Sie auf den Quellcode oder wenn es irgendeine Art von Fehler suchten.
Die Komponenten umfassen die Aktivitäten, so haben wir zu erklären,
jede Art von Aktivität, die wir verwenden.
Dies ist eine Erlaubnis Art der Sache.
>> Da Android nicht über diese strengen Bewerbungsprozess
für die Einreichung der Apps statt sie einfach alles aus der Berechtigungen basiert
und zu erklären, was in der Manifest.
Die SDK-Version ist ebenfalls wichtig.
Wir können als SDK minimale Version etwas gesetzt.
Natürlich wollen Sie Code erstellen
und Design für die neueren Betriebssysteme.
Vielleicht nicht das neueste, vielleicht nicht Jelly Bean.
Vielleicht wollen Sie in erster Linie für Ice Cream Sandwich-Bauweise,
obwohl sie sind so ziemlich das gleiche in Bezug auf Design-Entscheidungen
und die tatsächlichen Bibliotheken und APIs.
Aber anstatt die Menschen haben
des ursprünglichen Android-Version Donut-ähnlichen Weg zurück, wenn-
die noch geschehen zu sein, die versuchen, mit Ihrer Anwendung herunterzuladen und dann sagen
es funktioniert nicht auf meinem Handy können Sie die Minimal-Version eingestellt
und haben es Gingerbread oder Ice Cream Sandwich sein
oder was auch immer Sie sich wohl fühlen Einreichen.
Und dies ist ein Beispiel für das Manifest. Wir können bei der tatsächlichen einem ein bisschen suchen.
>> Okay, wir nur vorwärts gehen mit der Demo jetzt.
Dies ist die Demo, wenn Sie Google Android bauen Sie Ihre erste App oder so ähnlich.
Wir werden durch alles, was los ist in dorthin zu gehen,
und sorry, nur für eine Referenz, die hier kennt Java in irgendeiner Weise?
Okay, so Java ist neu programmierte Sprache für die meisten Menschen kommen aus der CS50.
Kurz gesagt, gehen immer wieder, was es hier sagt,
was wir wollen, ist, anstatt diese einstellen Hallo Welt Anwendung
dass alles was man tut, ist es startet und es sagt, hallo Welt
und es sagt hallo CS50 an der Spitze, denn das ist die Aktivität Namen
wir werden versuchen, ein Textfeld und eine Schaltfläche machen
so dass, wenn wir diese Taste drücken, wird es den Text
aus dem Textfeld und starten Sie eine neue Tätigkeit, und es wird sagen:
was, dass der Text der in der Tätigkeit, und das ist relativ einfach.
Es ist nicht sehr interessant. Sie würden nicht wollen, um jede App wie diese zu lösen.
Aber es zeigt einige wichtige Design-Dinge.
>> Wir müssen mit dem Manifest interagieren mit den Layout-Dateien,
mit dem Quellcode, und Sie können sehen, wie man eine Tätigkeit von der anderen zu starten.
Wir werden mit dem Layout für unsere erste Aktivität zu starten,
denen ich weiß, es ist eine Art von kleinen,
aber wie man jetzt sehen, ist alles, es ist es ist unser Logo, dass wir erstellt haben,
die Aktivität Name, und er sagt, hallo Welt in der Mitte.
Stattdessen bin ich zum ersten Mal werde dies in einer linearen Anordnung zu machen,
eine relative Layout und das sind alles Dinge
Sie könnte sich nach oben und sind es wert, geht über zu einem bestimmten Zeitpunkt in Bezug auf den Layouts.
Es ist ein viel wie HTML.
Wir haben gesagt, es ist nicht wirklich Wissenswertes im Sinne einer programmatischen Sinn,
aber es gibt so viele verschiedene Layouts können Sie steuern,
und es ist genau wie CSS in Bezug auf die Stile.
>> Es gibt eine Menge los nur in Bezug auf die Ästhetik hier
und ja, es ist es wert Lernen, aber es ist die Art von Sache, die Sie nachschlagen sollte
wie Sie gehen und fühlen Sie sich wie Sie etwas Neues brauchen.
Ich kann den Vorteil von einigen der ADT Tools hier zumindest zum Auftakt mit zu nehmen.
Ich mache ein Textfeld, und ich werde einen Knopf zu machen.
Setzen Sie sie direkt neben einander.
Sie haben bereits entsprechend ändern.
Sorry, wieder, immer wieder auf den Unterschied zwischen linearen Anordnung und relative Layout,
eine lineare Anordnung gibt ein wenig mehr Funktionalität
in Bezug auf Füllraum und dafür sorgen,
wir Position Dinge horizontal oder vertikal.
Der große Unterschied zwischen einer linearen und einer relativen Layout Layout
ist die relative Layoutpositionen alles relativ zu anderen Ansichten,
und das Gute daran ist, dass es weniger Zeit braucht, um zu zeichnen
da das Betriebssystem sieht überhaupt den Code und sagt, das geht
relativ zu diesem hier, hier.
Es bedeutet, es macht weniger Messungen als eine ganze Reihe von verschachtelten linearen Layouts
was müsste ich tun, wenn ich Dinge, die hier vertikal gehen wollte.
>> Ich habe bereits einige Dinge horizontal gehen, so würde ich brauchen eine andere lineare Layout
zu nisten sie vertikal, aber wenn ich taten eine relative Layout, ich könnte sagen
Halten Sie diese auf der linken Seite, das auf der rechten Seite und diese Dinge unter.
Aber weil ich sie gerade jetzt füllen wollen, ich werde um eine lineare Layout verwenden,
und Sie können sehen, es tut bereits eine Menge von diesen Dingen für uns.
Alle Ansichten müssen, um eine Eigenschaft von Breite und Höhe haben,
und in diesem Fall ein Gewicht von 1 haben, und das ein Gewicht von 1
so dass es füllt den ganzen Raum.
Aber die Breite und Höhe im Vordergrund.
Diese ID-Feld hier ist nicht innerhalb des eigentlichen Layout wichtig
es sei denn, wir verwenden eine relative Layout und sagen, wir können auf
einen Blick Position in Bezug auf ein anderes.
Wenn wir eine relative Layout hätten, könnten wir diese Position unterhalb von diesem sagen
oder oberhalb dieser ID, aber diese ID wird wichtig sein,
wenn wir mit ihm in unserem Code, weil wir verweisen können
diese einzelnen Ansichten auf diese Weise.
>> Und dann sieht man den tag requestFocus, die etwas, das Sie wahrscheinlich in pset 7 gesehen ist.
Es war ein Autofokus-Tag oder etwas in diese Richtung für eines der Felder.
Und eine Sache, natürlich können wir nur tun, wie in HTML,
und Bekanntmachung eines der schönen Dinge über ADT ist, dass es hier autocompletes.
Vielleicht nicht so schön wie es tat in XCode, aber es tut trotzdem
und wir könnten sagen, Hinweis und dann geben wir es irgendeine Art von String
gerne eine Nachricht schreiben,
und wenn ich es einen Moment geben, merke auch, dass ich ein wenig Fehlermeldung erhalten hier
sagen, dass wir eine String-Ressource für diesen Einsatz,
wenn ich also lassen Sie es einige der harten Arbeit für mich
Ich kann diese Zeichenfolge wählen, tun Refraktor Android und Android-Extrakt String.
Ich kann ihm diesen Namen, schreiben Sie eine Nachricht,
und was es hat jetzt ist es ersetzt das hart-codierten String
mit einer Referenz auf den String in der Saite. xml-Datei,
was bedeutet, das ist jetzt hier.
>> Und ich weiß, das scheint ein wenig trivial und wie zusätzliche Arbeit an dieser Stelle,
aber wenn man eine ganze Reihe von Dingen, eine ganze Reihe von Strings,
das ist wirklich wichtig, und besonders für die Lokalisierung
weil, wie ich bereits erwähnt habe, ist Android ein sehr global verwendetes Betriebssystem
dass man einfach tun Werte oder Werte-en-sp
oder etwas für Englisch oder Spanisch oder anderen Sprachen.
Und dann haben Sie wahrscheinlich nicht diese Erfahrung noch
da wir nicht viel tun JavaScript in Bezug auf die Web-Programmierung,
aber wir können auch dieses Feld namens onClick für die Schaltfläche
und dies ist ein Weg, der Referenzierung in unserem Layout
dass wir eine bestimmte Funktion in unserem Quellcode genannt werden wollen.
Ich werde dieses sendMessage nennen,
und um diese Arbeit zu machen das heißt in der Haupttätigkeit hier
Ich muss eine Funktion, die Öffentlichkeit zu erstellen
so dass sie durch die Anordnung erreicht werden.
Es ist nichtig, weil man einfach nicht wollen, dass er etwas zurückgeben.
Wir nennen sie sendMessage, und es dauert eine Ansicht,
Das ist eine Art Rahmen, dass wir dieses Verfahren verankern
dieser individuelle Sicht, wenn wir es läuft.
>> Und ich weiß nicht, ob Sie bemerkt-auch, Sie noch nicht bemerkt hätte,
aber an diesem Punkt hier
diese Ansicht ist eine Art, die noch nicht aufgenommen worden,
und natürlich können Sie alle von CS50 wissen nicht einschließlich Arten.
Die nette Sache über wie Eclipse IDE ist, dass
wenn Sie eine Art umfassen vergessen wird es mit einem kleinen roten Wellenlinien unterstrichen
und dann geben wir Ihnen die Möglichkeit, um die Ansicht zu importieren.
Ein schneller Weg, das zu tun, ist die Kontrolle Verschiebung O, und es wird zu importieren
Alle Dateien, die es braucht, um.
Jetzt, da wir diese Funktion sendMessage haben,
was wird aus der Nachricht MainActivity senden zu einer neuen Tätigkeit,
wir gehen zu müssen, eine Absicht, die neue Tätigkeit aus diesem einen Start zu verwenden,
so werden wir wahrscheinlich eine globale Konstante oder auch besonders eine öffentliche Konstante erstellen
das hilft uns wissen, wie wir gehen, um die Zeichenfolge verweisen
denn wenn wir eine Absicht schaffen wir nicht nur den Aufruf einer neuen Tätigkeit,
aber wir können auch ihm ein Bündel von Informationen.
Ein Bündel ist eigentlich der Begriff, dass Android verwendet,
und es ist eine Art zu sagen, geben ihm zusätzliche Daten, die nicht von einem sehr anspruchsvollen Datentyp kann,
aber wir können auf jeden Fall auch booleans oder Strings oder ints.
Diese Art der Sache.
>> Fühlen Sie sich frei, um über eines dieser Qualifikationsturniere hier fragen,
Öffentlichkeit, final, statisch.
Öffentlichkeit ist das wichtigste.
Es bedeutet, dass wir diese Variable von anderen Quellcode-Dateien zugreifen
wie wenn wir eine neue Aktivität zu erstellen.
Wir können auf die Zeichenfolge in dieser Datei.
Wenn es privat ist, bedeutet dies, es ist beschränkt auf diese einzelne Datei hier.
Aber wir nennen das so etwas wie zusätzliche Nachricht.
Jetzt haben wir diese Funktion aus, und wenn wir auf die Schaltfläche klicken, wird diese Funktion aufgerufen werden.
Aber wir haben nichts getan, natürlich, mit der Funktion.
Was wollen wir jetzt tun müssen, ist eine neue Aktivität,
die Aktivität, die auch tatsächlich gestartet werden.
In Eclipse können wir sagen, neuen, Android Tätigkeit blank Aktivität.
Wir können ihm einen Namen geben.
Nennen wir es unser Ergebnis Aktivität.
Und dann diese hierarchische übergeordnete Feld ist ein Weg der Angabe
wie die Aktivitäten miteinander verbunden.
Denn dieser wird von der anderen Tätigkeit gestartet werden
sollten wir festlegen, dass es das übergeordnete Haupttätigkeit hat.
>> Und ich konnte auf das nächste Feld geklickt haben es, das würde uns gesagt haben
einige optionale Felder, es war auch darunter,
aber das schöne an ADT wiederum ist, dass wenn ich nach unten scrollen hier
im Manifest erinnern, dass all dies wirklich war standardmäßig enthalten
wenn wir ursprünglich geschaffen, das Projekt,
und jetzt, da wir diese verwendet eine neue Tätigkeit nicht nur
Hinzufügen unserer eigenen Klasse Datei, weil wir durch ihre GUI ging, dies zu tun
es bereits hinzugefügt all dies zum Manifest für uns,
das bedeutet nur, dass jetzt das Betriebssystem nicht beschweren
wenn wir diese Aktivität zu starten versuchen.
Und es natürlich auch, gab es ein Label, das zeigt sich auch in Strings.
Es macht eine Menge Dinge auf dem Back-End für uns.
Wie auch immer, jetzt, dass wir dieses Ergebnis Aktivität haben sowie,
der eigentliche Quellcode-Datei im Quell-Ordner,
und Sie können sehen zu kurz auf dieser-berühren
weil wir gesagt, dass es über dieses hierarchische Eltern
es gab dieses Feld android.r.ide.home in diesem onOption ausgewählten Sache.
>> Was dies ist im Grunde sagen will ist, es gibt eine Menü-Taste jetzt
dass in der oberen linken Ecke des Bildschirms
wenn ich zurück in die PowerPoint wo wir sprachen zuerst über Aktionsleiste
wegen der hierarchischen Eltern jetzt gibt es einen kleinen Pfeil wieder hier
und dies ist anklickbar, so dass wir in der Lage sein sollten zu-nachdem wir eigentlich führen Sie dieses app-
zurück, und es ist eine Möglichkeit, um uns ein wenig Code gibt.
Jetzt in diesem-well, so scheint es, darüber zu beschweren, für einen Moment.
Lassen Sie uns, dass Sie zu kommentieren.
Jetzt, um tatsächlich mit diesen 2 Aktivitäten interagieren,
müssen wir eine Absicht, die alle diese Daten enthält erstellen.
In sendMessage jetzt bin ich auf Kreuzfahrt gehen durch einige Teile des Codes
und erklären, dass, wie ich gehen.
Eine Absicht, wie ich schon sagte, ist ein Weg, um eine Tätigkeit von der anderen zu starten.
Intent ist der Typ. Wir schaffen eine variable myIntent.
>> Und das ist eigentlich eine Aufgabe, weshalb wir zu nennen haben, ist neu.
Es ist üblich, Java-Nutzung gibt, die vielleicht ein wenig gewöhnungsbedürftig nehmen.
Dies bedeutet, dass wir mit der Aktivität oder die Klasse MainActivity,
und die Absicht auf diese Weise nimmt die Aktivität aus los ist
und die Aktivität es ist zu gehen, die wir ResultActivity nennen,
und das ist eine eigene Klasse.
Fügen Sie, dass.
Und dann, als ich schon erwähnt, gaben wir diese ID in den Bearbeitungsmodus Textfeld
und die Text-Ansicht, so um programmatisch zu erfassen
der Text, der in der editText existiert
nutzen wir diese Funktion aufgerufen findViewByID,
Das ist ähnlich wie etwas, das Sie verwenden, wenn Sie versuchen, Felder aus der DOM bekommen werde.
Vielleicht David spricht über das in der Vorlesung.
Aber es ist nur ein Weg, um die-das ist, warum wir diese Dinge zu markieren, mit diesen Bereichen.
Id.editText1.
Es ist schon Autovervollständigungsfeld für mich gibt.
>> Und dann werden wir auch dieses editText-jetzt, dass wir das Feld haben
in unserem Programm, hat alles, was findViewByID war im Grunde
Sie könnte daran denken, wie uns eine Referenz auf dieses editText.
Jetzt wollen wir den String oder die Meldung
innerhalb dieser editText, die wir mithilfe der-tun können
Sie konnte von editText als denken struct-
nennen wir es eine Aufgabe in Java-mit einer ganzen Reihe von verschiedenen Methoden
oder Feldern und Attributen damit verbunden.
Als ich editText sagen. es gibt mir die Chance, Zugang zu
eine Methode, wie getText, die den aktuellen Text erhalten
in diesem editText und dann, dass explizit konvertieren
auf einen String, und wir haben die Nachricht gespeichert.
Jetzt sind wir wirklich wollen, etwas mit dieser Absicht haben wir vor wenigen Augenblicken zu tun.
Ich setze extra es in der Absicht genannt wird,
was wiederum wie ich schon sagte, ist dies eine Möglichkeit zu schaffen, das Bündel
mit einem ganzen Bündel von Daten.
Zusätzliche Nachricht ist unser Tag, damit wir wissen, was wir sparen diese unter,
und dann bin ich mit der Nachricht.
>> Und dann können wir tatsächlich beginnen die Aktivität, indem es den Parameter myIntent.
Und das wird tatsächlich in Gang bringen, die Aktivität, so dass nun, da ich Windows 8 Upgrade
könnte es einige Fehler, die zeigen, kurz sein, aber versuchen, sie zu ignorieren.
Und dies ist der Android-Emulator.
Hoffentlich wird der Code eigentlich Pop-up in einem Augenblick.
Wieder ignorierte all diese kleinen Dinge.
Aber die Android Emulator emulieren kann eine beliebige Version des Betriebssystems
von den frühesten, Donut, Lebkuchen.
Dies ist Jelly Bean 4.1.
Aber Sie können jetzt sehen, ist dies etwas, was wir gemacht.
Dies hat den MainActivity die editText, die Taste.
Ich kann hier etwas geben, aber was fehlt uns an dieser Stelle?
Wir haben das Feld in der MainActivity die gehen, um die Nachricht zu senden ist
zum anderen Aktivität, aber an diesem Punkt
wir haben nichts in die andere Tätigkeit getan, so ist es nicht, etwas zu empfangen.
Lassen Sie uns beenden, dass ein Teil, bevor wir weitermachen.
>> Dieses Ergebnis Aktivität, was wir tun müssen, ist, dass wir tun müssen, ist, dass wir brauchen, um-
wir können auch auf die Absicht innerhalb dieser Aktivität
so haben wir die Absicht, die wirklich einfach ist festzuhalten.
Es ist eine Funktion in der Tätigkeit Klasse enthalten,
so können wir nur sagen: "Holen Sie sich die Nachricht von der Absicht."
"Intent myIntent = getIntent."
Und das wird uns-jetzt geben myIntent ein Objekt ist,
Das ist ein Hinweis auf die Absicht, die uns zu dieser Aktivität führte.
MainActivity ruft und gibt zusätzliche Informationen zur Aktivität.
Ergebnis Aktivität sieht nun in der Absicht, die sie hierher geführt,
und wir können auf die Nachricht, dass wir in dem anderen erstellt,
getStringExtra, und dies wird autocomplete für mich.
Und dann denken Sie daran, die Art, wie wir verschlagwortet dass Datenbit
war, indem es dieses Feld hier, diese public string,
Das ist der Tag nach der Zeichenfolge wir tatsächlich enthalten.
>> Wenn ich sage MainActivity.Extra_Message
es ist genau dort, und das ist ein bisschen wie dem Namen des Parameters
Als wir nun von der Steuerung aus der Vorlage,
wenn wir würden title arrow etwas zu sagen.
Es ist die gleiche Art von Idee gibt.
Nun, denken Sie daran.
Wir hatten auch dieses Auto erstellt oder automatisch generierten Code
Ergebnis für Aktivitäten umfasst, die die Text-Ansicht in der Mitte
Das sagt hallo Welt.
Wir könnten machen, dass größer.
Lassen Sie uns, dass zuerst.
Wir könnten es 40 Dichte unabhängige Pixel.
Mal sehen, das ist super riesig. Das wird in Ordnung sein.
Und dann, um diese individuelle Text-Ansicht in unserem Code verweisen
wir brauchen, um ihm eine ID,
und um das zu tun, was wir sagen @ + id, die wir zuordnen ID zugewiesen wird.
Wenn wir gerade gesagt @ id es annehmen würde, verweisen wir eine ID, die bereits vorhanden ist,
und nennen wir diese unsere resultTextView.
Und feststellen, dass in XML gibt es keine Notwendigkeit für ein Semikolon oder nichts.
Alles ist innerhalb dieser Tags.
Es ist sehr ähnlich wie HTML in eine Menge von Sinnen.
>> Es dauert ein wenig gewöhnungsbedürftig, aber schließlich werden Sie fühlen sich ziemlich wohl damit.
Lassen Sie aktualisieren den Text für unser Ergebnis Textansicht
und wie wir, wenn wir immer waren, dass die Text-Feld in unseren anderen Aktivitäten
in MainActivity Hier werden wir auch ebenso-
finden wir den Blick über die ID.
Und R, falls ich nicht erwähne dies vor, ist der Hinweis auf unsere Ressourcen Ordner
und dann-ID ist eine Referenz, um alles in der Ressourcen-Ordner, alle IDs,
und resultTextView.
Und nach wie vor ist resultTextView ein Objekt,
das heißt, sie hat all diese Eigenschaften zugeordnet.
Wenn wir getText für den Text für dieses Textfeld oder Text-Ansicht
können wir tatsächlich nutzen setText,
und dann haben wir bereits festgestellt, die Nachricht von der Absicht,
so kann ich sagen, Nachricht, und dies wird tatsächlich die Nachricht gesetzt.
>> Es dauert einen Moment, um zu starten, und dann können wir sehen, ob es abstürzt,
aber alle Fragen zu diesem Verfahren genau dort, diese Art der Interaktion?
In vielerlei Hinsicht ist es unkompliziert.
Der Grund warum ich über etwas relativ einfach gehe
ist, wieder, denn man muss die Interaktion zwischen dem Layout zu sehen bekommen,
der Quellcode, wie Sie anhand Dinge
und vielleicht ein wenig Exposition, wie Java arbeitet dort.
Wenn ich schreibe tatsächlich etwas in hier, wie ohai, und dann habe ich Sie auf die Schaltfläche
es startet eine neue Aktivität, und das Text-Ansicht sagt ohai.
Das ist sehr einfach, aber hoffentlich nach diesem Beispiel
Sie Art sehen, wie das Zusammenspiel funktioniert, und jetzt, Durcheinander von Dateien
auf der linken Seite für all diese Projektordner, hoffentlich wissen, wo sie jetzt aussehen.
Dies ist Ihr Quellcode Bereich.
>> Das Layout ist wirklich die einzige Sache, die Sie behandeln werde, bis Sie Bilder gehören
und die zeichenbare oder was auch immer, und Werte, das wird gehören Strings,
Wie bereits erwähnt, und dann Arten ist etwas, das irgendwie ist wie CSS.
Adresse, wenn Sie wollen, aber bis Sie sich wohl fühlen mit dem Hinzufügen von zusätzlichen Flair
Ihre Anwendung gibt es keine Notwendigkeit, darüber allzu viele Sorgen.
Nur zu wickeln eine andere Sache, werden Sie möchte auf jeden Fall gehören-
vorausgesetzt, Sie wollen coole Features zu integrieren und sparen Sie sich einige zusätzliche Codierung-
wäre zu 3rd-Party-Bibliotheken enthalten.
Hier ist der kleine Kerl mit dem Android Sherlock Holmes Hut.
Dies ist ein Action Bar Sherlock Bibliothek,
was im Grunde bedeutet, dass die Aktionsleiste Sie gesehen haben,
Das ist heute Standard in Ice Cream Sandwich und Jelly Bean,
wenn Sie diese Art von User Experience zu bringen Anwender mit älteren Versionen
und sparen Sie sich von Sorgen darüber, wie der Benutzer wird zu navigieren
auf älteren Versionen, wenn das Ding nicht da ist Sie können diese Bibliothek
und dann müssen Sie nur noch Referenz-anstatt der Standard-Android
Bibliotheken für die Aktionsleiste, verweisen Sie dieses Support-Bibliothek.
>> Dinge wie Scoreloop, es ist toll, wenn Sie sich zu einem Spiel gehören sind.
Es ermöglicht das Hinzufügen von Ranglisten und Erfolge Spiele.
AdMob ist eine Weise des Setzens Anzeigen in Ihre Anwendungen
in Fall, dass Sie ein wenig Geld aus der es machen.
Natürlich gibt es Facebook und Twitter für die Integration gibt
wenn Sie die Dinge einfach zu teilen, et cetera wollen.
Dropbox, ebenfalls, und Google Analytics ist, dass es ein Diagramm betrachten.
Das wird sehr wichtig sein, wenn Sie wirklich wollen, um zu sehen, wer die Interaktion
mit Ihrer Anwendung oder, wer es ist, wie sie interagieren, et cetera.
Google, die standardmäßig erfahren Sie eine Menge Statistiken über die App installiert wurde
und was Handys haben sie, was Betriebssystemversionen sie haben.
Aber wenn Sie wollen, um zu sehen, wer mit ihm auf einer täglichen Basis, und wie sie es verwenden
dann werden Sie wollen, um irgendeine Art von Tracking-System wie das umfassen.
>> Wenn Sie bereit sind, Ihre Anwendung verteilen
Ich brauche nicht in die in die Tiefe gehen zu viel.
Klicken Sie auf den Link hier, Wiedergabe Google.
Es verwendet, um die Android-Markt.
Sie firmiert alles mit Google Play,
so jetzt, dass Sie einreichen.
Es ist sehr einfach.
Sie müssen eine Beschreibung, ein paar Screenshots gehören.
Wie ich schon sagte, gibt es keine Genehmigungsverfahren wie iOS.
Und wo geht es weiter?
Ich zeigte Ihnen ein wirklich einfaches Beispiel.
Hoffentlich, wenn es scheint furchtbar einfach
dann ist das wohl ein gutes Zeichen.
Wenn Sie überhaupt fühlte mich ein wenig verwirrt oder unsicher über genau das, was ich eingeben
das ist auch in Ordnung, aber von hier aus zu Google Guides gehen.
Dies ist ein großartiger Ort zu starten.
Es wird Sie durch das, was sie erwarten, sprechen in Bezug auf die Anwendung Design,
wie die Benutzer normalerweise mit ihm interagieren.
Es ist viel freier Form als iOS, würde ich sagen,
welche es wie Tisch-Ansichten werden ich nicht zu kennen scheint, das ist ihr Brot und Butter.
Alles ist eine Tabelle, Sicht auf und ab gleitet.
Mit Android sie auf jeden Fall Menschen zu ermutigen, es aus aussehen
eine ganze Reihe von unterschiedlichen Perspektiven.
>> Wenn Sie auch die Software-Development-Kit in diesem ADT
Standardmäßig haben Sie eine ganze Reihe von Beispiel-Projekte in Android.
Genau hier, Android, Android Sample Project.
Wenn ich auf das, dann kann ich die Version auswählen, für die der Probe Projekten anzuwenden.
Es gibt eine ganze Reihe von verschiedenen Dingen hier.
Es beginnt mit der Aktion bar Kompatibilität,
Beschleunigungsmesser spielen, Backup und Restore, Bluetooth, Geste Builder.
JetBoy ist ein Probe-Spiel geben sie Ihnen, wie LunarLander.
Es gibt eine ganze Reihe von Beispielanwendungen hier
und sie sind alle auf verschiedene Aspekte der Android API gezielte,
und die Idee ist, dass, wie Sie Ihren Antrag stellen
Sie müssen nicht alles über Android lernen, eine Android App zu machen.
Sie müssen nur über die Teile, die Sie tatsächlich verwenden wollen lernen.
Schauen Sie sich diese Sample-Libraries.
Fühlen Sie sich frei zu kopieren und fügen Sie den Code und wenden Sie es erneut.
Es ist eine tolle Sache, um bei schwieriger Code aussehen
und versuchen, sie zu verstehen, ist das natürlich, warum in CS50
wir oft geben Ihnen große Mengen von Quellcode.
Schauen Sie sich einige von ihnen, wenn Sie sich auf ähnliche Bibliotheken verwenden wollen
und dann gilt es zu Ihrem eigenen Code.
Und natürlich gibt es Tutorials.
Suche nach Tutorials.
Ich fand eine Menge von guten online, die können Sie auf Trab bringen
mit dem, was Fragmente wirklich sind und wie Sie sie nutzen können.
>> Einige dieser neuen Design-Dinge, wie Fragmente,
Sie haben wirklich nicht zu befürchten, es sei denn du bist ein so
ziemlich groß in Umfang Projekts.
Es sind Dinge, dass Google versucht den Ausstieg in.
Stackoverflow ist natürlich dein Freund.
Hoffentlich habe ich verkauft man ein bisschen auf Android,
Realisierung ist es viel einfacher, in Bezug auf die nur die Codierung Sprache zu nähern.
Java ist würde ich sagen, viel einfacher zu verstehen als Objective-C.
Android wächst Ich denke, viel mehr als iOS.
Ich meine, sind die Daten auch dort, abgesehen von dem, was ich denke.
Es wird um für eine Weile,
und sie sind ein paar Jahre hinter in Bezug auf ihre Design-Zyklen,
so ist es irgendwie verständlich, dass sie arbeiten immer noch durch einige dieser
Konsistenz Fragen, wie diese Aktion bar ist eine neue Sache für sie noch,
Art, ähnliche Benutzererfahrung über alle apps.
Ich hoffe, Sie können sich jetzt gehen und eröffnen Eclipse-
und machen Sie Ihren eigenen Android Apps.
>> Hat jemand irgendwelche Fragen, bevor wir wickeln alles?
Ich kann Ihnen sagen, die Antwort ist 42.
Nun, jeder glücklich Codierung, und viel Glück.
[CS50.TV]