[Powered by Google Translate] [Séminaire] [Applications Android (maintenant avec Jelly Beans!)] [Jordan Jozwiak] [Université de Harvard] [C'est CS50.] [CS50.TV] Bonjour à tous, et bienvenue à la Applications Android (maintenant avec Jelly Beans!) __gVirt_NP_NN_NNPS<__ Séminaire. C'est ce qu'on appelle maintenant avec Jelly Beans, bien sûr, parce que la dernière version de l'OS est appelé Jelly Bean. Quand j'ai parlé Android l'an dernier et j'ai fait ce essentiellement ce même séminaire Je présentais les modèles de conception et les choix stylistiques de pain d'épice, même si Ice Cream Sandwich était sorti à l'époque, et c'est quelque chose que nous allons parler de l'avenir un peu. Android, bien sûr, a quelques problèmes avec la fragmentation, de sorte que le dernier système d'exploitation de Google est généralement pas vraiment à devenir fréquent chez les utilisateurs pour potentiellement jusqu'à une année, malheureusement. Mais abstraction, nous parlerons beaucoup de raisons pour lesquelles Android est beaucoup mieux que iOS. D'accord, nous allons parler de Android par rapport à iOS, certains paradigmes de conception, comment vous allez obtenir mis en place en une seule diapositive, et la grande différence entre ce dernier et l'année dernière, c'est que je veux juste zoom par certaines choses conceptuels travaillant avec le système d'exploitation et ensuite aller dans un exemple très basique. En fait, juste l'exemple que Google décrit pour construire votre première application, et nous allons passer en revue ensemble et juste décrivons. Je sais que beaucoup d'entre vous ont seulement codé en C, si Java est déjà vais être une perspective différente, et de cette façon vous vous mouiller les pieds et se sentir un peu plus à l'aise avec elle l'espère. Un résumé rapide, Android par rapport à iOS. Dans Android, il ya cette taxe développeur unique de 25 $, Rien de tout cela chose de 100 $ par année. Il n'y a aucune restriction, ce qui signifie que si je veux soumettre une application, Je viens de le soumettre, et il n'y a pas de processus d'approbation, comme il en existe pour iOS. Vous aurez à développer avec Java avec Eclipse, qui est multiplateforme, donc ce n'est pas grave si vous avez un Mac, Windows, ou une machine Linux. Bien sûr, avec iOS, vous devez utiliser XCode sur Mac, Android est utilisé par beaucoup plus de gens, donc si vous voulez que votre application pour avoir une sorte de visibilité ou peut-être faire un peu d'argent de la publicité vous êtes probablement plus susceptibles de bénéficier d'Android. Et une chose qui a toujours été connue sur Android est le montant extrême de la personnalisation, tandis que iOS est très fixé dans leurs façons afin qu'ils puissent maintenir la sécurité et le contrôle de chaque aspect peu de la conception au sein de leur système d'exploitation et les applications individuelles. Android est une forme très libre, et il ya tellement beaucoup plus de possibilités. Bon, certains paradigmes de conception. Remarquez ici comme iOS a tablettes et iPhones et iPod ils doivent prendre en charge, par exemple, comme une douzaine d'appareils si vous voulez soutenir choses historiques ainsi. Avec Android, vous devez appuyer sur des centaines de dispositifs, donc il ya certaines choses que Google a essayé de mettre en œuvre de faire l'expérience de l'utilisateur un peu plus cohérente, mais nous allons aussi parler de la façon dont cela signifie qu'il ya des problèmes de fragmentation que vous devez constamment être conscient de l'appui. La fragmentation signifie qu'il ya beaucoup de systèmes d'exploitation différents, plusieurs téléphones avec un matériel différent fonctionnant sous Android tout en même temps, si ce graphique ici remonte pendant environ 6 mois. Ouais, 6 mois, et vous pouvez voir comment la bande sombre sur le fond est Jelly Bean, qui est sorti durant l'été, et vous pouvez voir tout de suite probablement d'environ 2% des téléphones ont. Ice Cream Sandwich est sorti il ​​ya plus d'un an, et un quart des téléphones avoir. Il ya encore beaucoup de téléphones qui utilisent la version OS il ya des années. Une chose que Google a essayé de faire pour rendre l'expérience utilisateur beaucoup plus cohérente à travers apps commence avec Honeycomb, qui est la version de la tablette, puis Ice Cream Sandwich et Jelly Bean, ils sont vraiment essayer de mettre l'accent sur l'utilisation de cette barre d'action, qui est ce que vous pouvez voir en haut ici, tout ici, y compris sur ce bouton Paramètres peu. C'est le choix de la conception. Maintenant, quand vous voyez les 3 points, cela signifie cliquez sur ce point, et il y aura un menu déroulant, qui a une sorte de paramètres. Cela ne se présente parce que j'ai cliqué sur ce bouton. C'est quelque chose qu'ils essaient d'utiliser pour faire des applications un peu plus cohérente dans tous les domaines et que l'utilisateur dispose d'un meilleur sens de l'expérience uniforme. Ok, donc si vous ne l'avez pas déjà fait cela ou si vous regardez à la maison alors vous pouvez suivre ces étapes pour configurer votre environnement de codage. Il s'agira d'aller sur le site ici. Vous pouvez Google installation du SDK Android et de suivre quelques descriptions là. Ils vous disent tout. Ils ont vous installez le, téléchargez la version d'Eclipse SDK classique, même si, bien sûr, nous allons coder en Java. Ils recommandent celui-ci, et puis cette ADT, les outils de développement Android, est un plug-in que vous installez dans Eclipse qui vous permet de avoir une expérience beaucoup plus simple avec Android au sein d'Eclipse. Il vous donnera quelques interfaces graphiques pour la conception des points de vue, et il vous donnera beaucoup plus de soutien et la capacité de lancer avec l'émulateur et tout ce genre de chose. Application Framework. Je veux parler de la façon dont les projets dans Android sont structurés, et puis nous irons dans un petit exemple, et j'espère vous pouvez poser des questions à tout moment et à l'aise à la fin de celui-ci. Nous avons d'abord un peu de jargon. Une activité est similaire à l'écran que vous voyez lorsque vous lancez une application. L'expérience entière est l'activité elle-même, de sorte que vous pourriez penser qu'il s'agit d'un écran ou d'une vue, mais c'est en fait la partie du code source de celui-ci. Nous appelons encore la partie interface réelle de celui-ci en vue. C'est un peu comme la façon de pset 7 nous avions le contrôleur, puis la vue. L'activité est plus ou moins le dispositif de commande, et la vue est ce que nous faisons en termes de XML qui est associé à cette activité. Les fragments sont quelque chose qui est mis en œuvre dans Ice Cream Sandwich aller de l'avant. C'est juste une idée de prendre des parties de la vue ou de l'activité et en les divisant en zones distinctes afin que nous puissions rendre notre code plus facile à utiliser pour ces nombreux appareils différents que nous devons soutenir, et c'est juste une façon d'essayer de également factoriser plus de code. Les services sont fond des choses comme jouer de la musique ou des instructions de navigation potentiellement. Les fournisseurs de contenu, ce sont les API du système d'exploitation qui vous permettent d'accéder aux données partagées telles que les informations de contact, puis un but est quelque chose que nous allons utiliser quand nous voulons lancer une nouvelle activité de notre activité actuelle. Bonjour Android, cela va être un projet que nous allons parler. Je vais vraiment le faire pour vous, et puis nous allons faire quelque chose où l'on clique sur un bouton avec un peu de texte et de lancer une nouvelle activité. Très simple, mais je veux passer par ce qui ira dans un projet comme celui-ci. Lorsque vous faites le nouveau projet que vous verrez au sein d'Eclipse il ya ce projet intitulé Bonjour Android. Ensuite, il ya tout un tas de dossiers ici. Ceux que vous êtes vraiment concernés par le dossier sont à la source, le dossier des ressources, le RES, et dans une certaine mesure, le dossier libs pour les bibliothèques. Et si nous sommes sur la même page avec ce Si vous aviez à créer un nouveau projet, vous pouvez le faire ici, donc si je veux appeler HelloAndroid, puis il le fait automatiquement tout un tas d'informations pour nous. Le nom du paquet est censé être un identifiant unique qui seraient normalement associés avec le site, si vous en aviez un. Par exemple, je vais appeler cette net.cs50.helloandroid. Et j'ai déjà fait de ce projet une fois. Bon, désolé. Appelons cela HelloCS50. Et puis il vous demandera des choses comme ce genre d'icône voulons-nous faire. Ceci est tout à cause de l'interface Android Developer Tools, le plug-in que nous avons ajouté à Eclipse, ainsi nous pouvons choisir des choses comme quelle icône que nous voulons, et ce serait aller dans cette profondeur si nous voulons. Mais à la fin, juste faire le projet, et tout ce qui se présente ici. Comme je l'ai montré sur l'autre écran, nous avons le dossier source, et je vais parler de ce que tout cela veut dire bientôt, mais vous pouvez voir que tout de suite il nous emmène à l'écran HelloCS50. Il ya quelques touches plus ici pour ajouter des mises en champ de texte et le texte. C'est un peu comme XCode, mais malheureusement pas tout à fait aussi simple. Mais les clips seront vos amis et ADT en particulier pour ce faire. D'accord, le dossier source est l'endroit où les fichiers Java sont organisées, et c'est en fait le lancement de votre programme. C'est fondamentalement comme les contrôleurs. Le dossier de ressources ou la chose est l'endroit où nous allons garder configurations d'écran, images, sons, textes, animations et tout le reste, libs, évidemment, bibliothèques. Et le manifeste, c'est la façon dont le système Android sait comment interagir avec votre application. Il dit que sur les autorisations et les activités qui sera effectivement exécuté. C'est toute l'information essentielle qui est nécessaire pour exécuter votre application. Le dossier source est-il si nous élargissons comme vous pouvez le voir ici. Et un exemple d'un code ressemblerait-il s'agit du code par défaut. Comme nous l'appelions, MainActivity. Par défaut, nous obtenons onCreate, qui est une fonction qui est appelée lorsque la charge cette activité, si vous voulez appeler onCreate (savedInstanceState). Cela permettra de restaurer tous les éléments d'information dans le cas où l'application a été suspendue. Il ya une activité ensemble graphique du cycle de vie que vous pouvez regarder quand vous obtenez un peu plus en profondeur en elle, mais la ligne la plus importante du Code, il ya cette fonction setContentView qui va charger le fichier de ressources pour la mise en page. Alors qu'est-ce onCreate ici est essentiellement fait est qu'il est dit quand je crée cette activité, je veux charger cette disposition. Et nous allons parler de ce que la disposition est en une seconde. Si nous devions lancer qu'ici il ressemble exactement à cela, et par défaut, parce que nous avons Eclipse faisant cela et ADT faire pour nous c'est tout ce code réutilisable qui est créé pour nous, et nous pouvons avancer et changer les choses que nous aimons. Le dossier de ressources, comme je l'ai dit, c'est là que nous détenons toutes les configurations, drawables en termes de toute sorte d'images- ils sont appelés dessinables, et puis les fichiers audio, les menus. C'est une façon de tout un tas de XML dans un joli mode triés. Comme vous pouvez le voir, il ya. Hdpi, LDPI, MDPI et dossiers xhdpi pour les drawables. Ceux-ci sont différentes densités d'écran, pixel afin de haute densité par pouce, faible densité, densité moyenne, très haute densité. C'est, encore une fois, si nous pouvons soutenir tous ces différents dispositifs, et idéalement, vous aurez des images différentes pour chaque résolution différente. Mises sommes là où nous incluons toutes les différentes configurations qui seront utilisées dans différentes activités. Ils pourraient également inclure des dispositions pour les fragments, ce qui signifie essentiellement des activités partielles. Si vous voulez faire quelque chose de cool comme lorsque vous faites pivoter le téléphone vous voulez qu'il ait une disposition différente que vous pouvez faire layout-paysage comme un dossier différent, Android a automatiquement tout un tas de ces règles dans le dossier des ressources, il saura regarder différents dossiers en fonction de la configuration actuelle du téléphone, ce type de matériel que vous utilisez. De même, cette valeur-là v11 et v14 valeurs et les valeurs par défaut dossier c'est pour- ainsi, les valeurs par lui-même, ce seront les valeurs par défaut dans toutes les versions du système d'exploitation. D'autre part, v11 et v14 correspondre avec Honeycomb et Ice Cream Sandwich, respectivement. Encore une fois, ce sont des moyens qui, au sein de ces dossiers sont différentes chaînes et les styles, de sorte que vous pouvez personnaliser l'apparence de votre application ou peut-être même sa fonctionnalité, bien que ce serait probablement une mauvaise idée, sur la base de la version du système d'exploitation. Et j'ai parlé de tout cela ici. Encore une fois, étirables, cru, mise en page, des valeurs. Les valeurs par défaut, si nous entrons dans Bonjour Android ou Bonjour CS50 dès maintenant il va chercher comme ça. Il dira bonjour tout le monde. Comme vous pouvez le voir ici avec le texte Android le texte de ce point de vue du texte, qui est fondamentalement juste un label, c'est ce que nous appellerions dans iOS. Il a cette drôle notation @ string / hello_world. C'est ainsi que nous pouvons-nous tenter d'extraire toutes les chaînes, toutes les chaînes codées en dur dans Android dans un dossier distinct, qui se trouve être dans values.strings. Si nous regardons ici, nous pouvons voir que nous avons une chaîne codée en dur enregistrée ici pour bonjour le monde, et il est appelé Bonjour tout le monde, et c'est une sorte de décision de conception commune dans de nombreuses plates-formes que vous voulez- cordes sont le genre de choses que nous voulons être potentiellement en mesure de changer. Nous ne voulons pas contrôler F dans notre fichier de code source dans notre XML. Nous voulons être en mesure de changer cela quand nous avons la chance. Ce fichier XML, strings.xml, est une façon d'extraire chaînes codées en dur qui seraient autrement dans nos ressources de mise en page ou dans notre code source. Le manifeste est l'endroit où nous gardons cette information essentielle sur l'application. Il comprend le nom du package. Cela doit être un identifiant unique. Contrairement à l'App Store pour iOS les noms des applications n'ont pas à être unique, et vous pouvez en effet changer le nom de votre application Une fois que vous soumettez, donc si je commence avec Angry Birds, et puis je fais une mise à jour, et je ne veux pas sortir une nouvelle version Je suppose que je pourrais appeler Angry Birds 2 alors que je suis sur le même cycle de sortie. Il suffit de se présenter comme une mise à jour. La seule chose qui doit être unique, c'est le nom de ce paquet, qui peu de gens vont voir. Eh bien, tu ne voyez que si vous regardiez le code source ou si il ya une sorte d'erreur. Les composants comprennent des activités, nous devons donc déclarer toute sorte d'activité que nous utilisons. Il s'agit d'une autorisation genre de chose. Parce que Android n'a pas ce rigoureux processus de demande pour soumettre des applications à la place ils n'ont tout simplement tout basés hors des autorisations et déclarant choses dans le manifeste. La version SDK est également importante. Nous pouvons définir l'utilisation que SDK Version minimum quelque chose. Évidemment, vous voulez créer un code et de conception pour les systèmes d'exploitation plus récents. Peut-être pas le plus récent, peut-être pas Jelly Bean. Peut-être que vous souhaitez concevoir principalement pour Ice Cream Sandwich, même si elles sont à peu près la même en termes de décisions de conception et les bibliothèques et API réels. Mais plutôt que d'avoir des gens de l'original Android version comme chemin du retour lorsque Donut- qui arrive encore à utiliser qui tentent de télécharger votre application, puis dire il ne fonctionne pas sur mon téléphone, vous pouvez définir la version minimale et ont-il Gingerbread ou Ice Cream Sandwich ou ce que vous Submitting confortable. Et ceci est un exemple du manifeste. Nous pouvons regarder le réel en un peu. D'accord, nous allons simplement aller de l'avant avec la démo maintenant. Il s'agit de la démo si vous Google Android construire votre première application ou quelque chose comme ça. Nous allons passer en revue tout ce qui se passe là-dedans, et désolé, juste pour une référence qui sait ici Java à toute mesure? Ok, donc Java est nouveau langage de codage pour la plupart des gens qui sortent de CS50. En bref, pour aller encore ce qu'il dit ici, ce que nous voulons faire, c'est plutôt de régler cette application Bonjour tout le monde que tout ce qu'il fait est qu'il se lance et il dit bonjour le monde et il dit bonjour CS50 au sommet parce que c'est le nom de l'activité nous allons tenter de faire un champ de texte et un bouton de sorte que lorsque nous appuyer sur ce bouton, il faudra le texte à partir de la zone de texte et de lancer une nouvelle activité, et il va dire tout ce que le texte dit dans l'activité, ce qui est relativement simple. Ce n'est pas très intéressant. Vous ne voudriez pas de libérer n'importe quelle application comme ceci. Mais il démontre certaines choses importantes de conception. Nous allons devoir interagir avec le manifeste, avec les fichiers de mise en page, avec le code source, et vous pouvez voir comment lancer une activité d'un autre. Nous allons commencer avec la mise en page pour notre première activité, ce que je sais c'est un peu petit, mais comme vous pouvez le voir en ce moment, tout ce qu'il est, c'est qu'il a notre logo que nous avons créé, le nom de l'activité, et il dit bonjour le monde au centre. Au lieu de cela, je vais d'abord faire cela dans une mise en linéaire, une disposition relative, et ce sont toutes les choses vous pouvez rechercher et valent la peine d'aller plus à un moment donné en termes de mises en page. C'est un peu comme HTML. Nous avons dit que ce n'est pas vraiment intéressant de savoir en termes de sens programmatique, mais il ya tellement de configurations différentes que vous pouvez contrôler, et c'est comme CSS en termes de styles. Il ya beaucoup de choses simplement en termes d'esthétique ici, et oui, c'est l'apprentissage peine, mais c'est le genre de chose que vous devriez chercher que vous allez et vous vous sentez comme vous avez besoin quelque chose de nouveau. Je peux profiter de quelques-uns des outils ADT ici au moins pour commencer. Je vais faire un champ de texte, et je ferai un bouton. Mettez-les à côté de l'autre. Ils ont déjà redimensionner de manière appropriée. Désolé, encore une fois, pour revenir à la différence entre la disposition et l'agencement linéaire relative, une disposition linéaire donne un peu plus de fonctionnalités en termes de remplir l'espace et faire en sorte nous positionnons choses horizontalement ou verticalement. La grande différence entre une disposition linéaire et une mise en rapport est la mise en rapport des positions tout par rapport à d'autres points de vue, et la bonne chose à ce sujet est que cela prend moins de temps pour dessiner parce que le système d'exploitation regarde tout le code et dit ceci va par rapport à cela ici, ici. Cela signifie qu'il fait moins de mesures que tout un tas de configurations linéaires imbriqués, que je dois faire si je voulais que les choses vont verticalement ici. J'ai déjà quelques choses qui se passent horizontalement, donc j'aurais besoin d'un aménagement linéaire différent pour les imbriquer verticalement, mais si je faisais une présentation relativement je pourrais dire garder cela à la gauche, ce qui est correct et ces choses ci-dessous. Mais parce que je veux qu'ils remplissent en ce moment je vais utiliser une disposition linéaire, et vous pouvez voir qu'il fait déjà beaucoup de ces choses pour nous. Toutes les opinions doivent avoir une propriété de la largeur et de la hauteur, et cela arrive à avoir un poids de 1, ce qui a un poids de 1 de sorte qu'il remplit tout l'espace. Mais la largeur et la hauteur sont les plus importants. Ce champ ID ici n'est pas important au sein de la structure réelle à moins que nous utilisons une disposition relative et dire que nous pouvons référencer une position de vision, en référence à l'autre. Si nous avions un plan relatif, nous pourrions dire la position ci dessous celui-ci ou au-dessus de cette identité, mais cet ID sera important lorsque nous l'utilisons dans notre code parce que nous pouvons référencer ces points de vue individuels dans cette voie. Et puis, vous pouvez voir le tag requestFocus, ce qui est quelque chose que vous avez probablement vu dans pset 7. Il y avait une étiquette de mise au point automatique ou quelque chose du genre pour l'un des champs. Et une chose, bien sûr, nous pouvons faire tout comme en HTML, et un avis l'une des choses gentilles sur ADT est qu'il autocompletes ici. Peut-être pas aussi bien qu'il l'a fait dans XCode, mais il fait néanmoins, et nous pourrions dire soupçon et puis de lui donner une sorte de chaîne comme écrire un message, et si je lui donne un moment, aussi remarquer que je reçois une petite erreur ici en disant que nous devrions utiliser une ressource de type chaîne pour cela, donc si je le laisse faire une partie du travail difficile pour moi Je ne peux sélectionner cette chaîne, faire lunette Android et string Android extrait. Je peux lui donner ce nom, écrire un message, et ce qu'il n'a il est maintenant remplacé cette chaîne codée en dur avec une référence à la chaîne en. xml du dossier de la chaîne, ce qui signifie maintenant c'est ici. Et je sais que cela semble un peu de travail supplémentaire trivial et comme en ce moment, mais quand vous avez tout un tas de choses, tout un tas de cordes, c'est très important, et en particulier pour la localisation parce que, comme je l'ai mentionné plus tôt, Android est un système d'exploitation utilisé globalement très que vous pouvez tout simplement pas les valeurs ou les valeurs en-sp ou quelque chose pour l'anglais ou l'espagnol ou d'autres langues. Et puis vous n'avez probablement pas encore eu cette expérience puisque nous n'avons pas fait beaucoup JavaScript en termes de programmation web, mais nous pouvons aussi faire ce champ appelé onClick du bouton, et c'est une façon de référencer au sein de notre mise en page que nous voulons une certaine fonction à appeler dans notre code source. Je vais appeler cette sendMessage, et afin de faire ce travail qui signifie dans la principale activité ici Je vais devoir créer une fonction qui est public de sorte qu'il est possible d'accéder par la mise en page. C'est nul parce que vous ne voulez pas qu'il retourne rien. Nous l'appellerons sendMessage, et il faut un point de vue, qui est une sorte de contexte que nous pouvons ancrer cette méthode de ce point de vue individuel lorsque nous exécuter. Et je ne sais pas si vous avez remarqué, eh bien, vous ne l'auriez pas remarqué, mais à ce point ici cette vue est d'un type qui n'a pas encore été incluse, et bien sûr, vous savez tous CS50 de ne pas y compris les types. La bonne chose à propos de l'EDI comme Eclipse, c'est que Si vous oubliez d'inclure un type, il soulignera avec un peu de rouge ondulée et puis vous donner la possibilité d'importer la vue. Un moyen rapide de le faire est commande de changement de O, et il importera tous les fichiers dont il a besoin pour. Maintenant que nous avons cette fonction sendMessage, qui va envoyer un message à partir de la MainActivity à une nouvelle activité, nous allons avoir à utiliser une intention de lancer la nouvelle activité de celui-ci, donc nous allons probablement voulons créer une constante globale ou aussi particulièrement une constante publique qui nous aidera à savoir comment nous allons faire référence à la chaîne parce que lorsque nous créons une intention, nous ne sommes pas simplement en l'appelant une nouvelle activité, mais nous pouvons aussi lui donner un ensemble d'informations. Un bundle est en fait le terme qui utilise Android, et c'est une façon de dire lui donner des données supplémentaires, ce qui ne peut pas être d'un type de données très sophistiqué, mais nous pouvons certainement comprendre booléens ou des chaînes ou ints. Ce genre de chose. N'hésitez pas à poser des questions sur l'un de ces qualificatifs ici, publique, finale, statique. Publique est l'important. Cela signifie que nous pouvons accéder à cette variable à partir d'autres fichiers de code source comme lorsque nous créons une nouvelle activité. Nous pouvons référencer la chaîne dans ce fichier. Si c'est privé, cela signifie que c'est limité à ce fichier individuel ici. Mais nous allons appeler cette chose comme un message supplémentaire. Maintenant, nous avons fait cette fonction, et si l'on clique sur le bouton, cette fonction sera appelée. Mais nous n'avons rien fait, évidemment, avec la fonction. Ce que nous voulons faire maintenant est de créer une nouvelle activité, l'activité qui sera effectivement lancée. Dans Eclipse, nous pouvons dire nouvelle, l'activité Android, activité vierge. Nous pouvons lui donner un nom. Disons que c'est notre activité de résultats. Et puis ce champ parent hiérarchique est un moyen de spécifier la manière dont les activités sont liées les unes aux autres. Parce que celui-ci sera lancé à partir de l'autre activité nous devons préciser qu'il a l'activité principale des parents. Et je pourrais avoir cliqué sur le champ suivant là, qui nous ont dit certains champs facultatifs qui il a également été, y compris, mais la bonne chose à propos ADT, encore une fois, c'est que si je fais défiler vers le bas ici dans le manifeste rappelez-vous que tout cela vraiment été inclus par défaut lorsque nous avons créé le projet, et maintenant, parce que nous avons utilisé cette création d'une nouvelle activité plutôt que de simplement ajoutant notre propre fichier de classe parce que nous sommes allés à travers leur interface graphique pour ce faire il déjà ajouté tout cela pour le manifeste pour nous, ce qui signifie juste que maintenant le système d'exploitation ne se plaindra pas quand nous essayons de lancer cette activité. Et c'est aussi, bien sûr, il a donné une étiquette, qui apparaît également dans les chaînes. Il fait beaucoup de choses sur le back-end pour nous. Quoi qu'il en soit, maintenant que nous avons cette activité résulte ainsi, le fichier de code source dans le filtre de source, et vous pouvez voir à évoquer brièvement ce- parce que nous lui avons dit à propos de ce parent hiérarchique il a donné ce domaine android.r.ide.home dans ce onOption chose sélectionné. Ce qui revient à dire, c'est qu'il ya un bouton de menu aujourd'hui que, dans le coin supérieur gauche de l'écran si je reviens à la PowerPoint où nous avons d'abord parlé de la barre d'action parce que le parent hiérarchique maintenant, il ya une petite flèche de retour ici et cela est cliquable donc nous devrions être capables de nous courons après-fait cette app- revenir en arrière, et c'est une façon de nous sauver un peu de code là. Maintenant, dans ce puits, il semble se plaindre à ce sujet pendant un moment. Allons commentaire cela. Maintenant, afin de réellement interagir avec ces 2 activités, nous devons créer une intention qui comprend toutes ces données. En sendMessage maintenant, je vais faire une croisière à travers quelques morceaux de code et d'expliquer que je vais. L'intention, comme je le disais, est un moyen de lancer une activité d'un autre. L'intention est le type. Nous créons un myIntent variable. Et c'est en fait un objet, c'est pourquoi nous devons appeler de nouveau. Il est d'usage courant Java là-bas, ce qui pourrait prendre un peu de temps pour s'y habituer. Cela signifie que nous utilisons l'activité ou le MainActivity de classe, et l'intention de cette façon prend l'activité qu'il va partir et l'activité ça va, que nous appelons ResultActivity, et c'est sa propre classe. Inclure cela. Et puis, comme je l'ai mentionné auparavant, nous avons donné cet ID dans le champ d'édition de texte et l'affichage de texte, de sorte afin de capturer programmation le texte qui existe dans le editText Nous utilisons cette fonction appelée findViewById, qui est semblable à quelque chose que vous allez utiliser lorsque vous essayez d'obtenir des champs de la DOM. Peut-être que David parle dans conférence. Mais c'est juste une façon d'obtenir ceux-c'est pourquoi nous Marquer ces choses avec ces domaines. Id.editText1. C'est déjà autocompleting pour moi là-bas. Et puis nous allons aussi inclure la présente editText maintenant que nous avons le terrain au sein de notre programme, tout ce qui findViewById n'a été essentiellement vous pourriez penser que c'est nous donner une référence à cette editText. Maintenant, nous voulons obtenir la chaîne ou le message dans ce editText que nous pouvons faire à l'aide de la vous pourriez penser editText comme une struct- nous l'appelons un objet en Java avec tout un tas de différentes méthodes ou les champs et les attributs qui lui sont attachés. Quand je dis editText. il me donne la chance d'accéder un tel procédé getText, qui obtiendra le texte actuel dans ce editText et la convertir ensuite explicitement à une chaîne, et nous avons sauvé le message. Maintenant, nous voulons réellement faire quelque chose avec cette intention que nous avons créé il ya quelques instants. Je mettrai supplémentaire comme on l'appelle dans l'intention, qui, encore une fois, comme je l'ai déjà dit, c'est une façon de créer le faisceau avec tout un tas de données. Un message supplémentaire est notre balise, donc nous savons ce que nous gagnons ce titre, et puis je vais y compris le message. Et puis nous pouvons réellement commencer l'activité en lui donnant le paramètre myIntent. Et ce sera effectivement lancer l'activité, alors maintenant que j'ai mis à niveau vers Windows 8 il pourrait y avoir quelques erreurs qui apparaissent brièvement, mais essayez de les ignorer. Et c'est l'émulateur Android. Espérons que le code fait apparaître dans un instant. Encore une fois, en ignorant toutes ces petites choses. Mais l'émulateur Android vous permet d'émuler n'importe quelle version du système d'exploitation dès les premiers petits, Donut, Gingerbread. C'est Jelly Bean 4.1. Mais comme vous pouvez le voir en ce moment, c'est quelque chose que nous avons fait. Cela a l'MainActivity, le editText, le bouton. Je peux taper quelque chose ici, mais ce qui nous manque à ce point? Nous avons fait le champ de la MainActivity qui va envoyer le message à l'autre activité, mais à ce point nous n'avons rien fait dans l'autre activité, donc ça ne va pas à recevoir quoi que ce soit. Finissons cette partie avant que nous passions. Cette activité de résultat, ce que nous devrons faire, c'est nous devons faire, c'est nous devrons- nous pouvons également référencer le but de cette activité, nous devons donc saisir l'objectif, qui est vraiment simple. C'est une fonction incluse dans la classe d'activité, si nous pouvons simplement dire «Recevez le message de l'intention." "MyIntent Intention = getIntent." Et cela nous donnera-maintenant myIntent est un objet, qui est une référence à l'intention qui nous a conduit à cette activité. MainActivity appelle et donne des informations supplémentaires pour entraîner activité. activité Résultat regarde maintenant l'intention qui l'a conduit ici, et nous pouvons accéder au message que nous avons créé dans l'autre, getStringExtra, et cette volonté d'auto-complétion pour moi. Et puis, souvenez-vous, la façon dont nous avons marqué que peu de données était en lui donnant ce domaine ici, cette chaîne publique, qui est la balise pour la chaîne nous réellement inclus. Si je dis MainActivity.Extra_Message c'est juste là, et c'est un peu comme le nom du paramètre lorsque nous avons adopté le code de l'automate vers le modèle, lorsque nous dirions titre flèche quelque chose. C'est le même genre d'idée là. Maintenant, rappelez-vous ceci. Nous avions également cette auto créé ou généré automatiquement le code pour l'activité de résultat, qui comprend l'affichage de texte dans le milieu qui dit bonjour le monde. Nous pourrions éventuellement faire que plus grand. Faisons d'abord. Nous pourrions faire 40 densité de pixels indépendants. Voyons voir, que c'est super énorme. Ce sera bien. Et puis, pour faire référence à cet affichage de texte individu au sein de notre code nous aurons besoin de lui donner une identité, et pour ce faire, nous disons @ + id, ce qui signifie que nous assignons ID. Si nous venons de dire @ id il serait supposer que nous sommes référence à un ID qui existe déjà, et appelons-ce notre resultTextView. Et remarquez que dans XML il n'y a pas besoin de virgule ou rien. Tout est à l'intérieur de ces balises. Il est très similaire à HTML dans beaucoup de sens. Il faut un peu de temps pour s'y habituer, mais finalement vous vous sentirez très à l'aise avec elle. Nous allons mettre à jour le texte de notre vision du texte de résultat, et comme nous l'avons fait lorsque nous recevions ce champ d'édition de texte dans notre autre activité dans MainActivity Ici, nous allons également aussi- nous trouverons le point de vue de l'ID. Et R, au cas où je n'en ai pas parlé avant, c'est la référence à notre dossier de ressources, et puis ID est une référence à tout dans le dossier des ressources, tous les ID, et resultTextView. Et comme avant, resultTextView est un objet, ce qui signifie qu'il possède toutes ces propriétés qui lui sont associés. Lorsque nous utilisons gettext pour l'édition de texte pour ce champ de texte ou l'affichage de texte nous pouvons utiliser setText, et puis nous avons déjà trouvé le message de l'intention, si je peux dire, message, et ce sera effectivement mis le message. Il prend un moment pour lancer, et nous pourrons alors voir si oui ou non il se bloque, mais des questions sur ce processus là, ce genre d'interaction? À bien des égards, c'est simple. La raison pour laquelle je vais à travers quelque chose de relativement simple est, encore une fois, parce que vous obtenez de voir l'interaction entre la mise en page, le code source, comment vous faites référence à des choses et peut-être obtenir un peu d'exposition à la façon dont Java y travaille. Si fait, je tape quelque chose ici, comme ohai, puis je clique sur le bouton, il lance une nouvelle activité, et ce point de vue des textes indique ohai. C'est très simple, mais nous espérons que, après cet exemple vous sorte de voir comment cette interaction fonctionne, et maintenant ce désordre de fichiers sur le côté gauche de tous ces dossiers de projet, j'espère que vous savez où chercher maintenant. Ceci est votre zone de code source. Mise en page est vraiment la seule chose que vous aurez à composer avec jusqu'à ce que vous incluez images et les drawables ou autre, et les valeurs, qui comprendront des cordes, comme nous l'avons mentionné, puis styles est quelque chose qui est un peu comme CSS. Adressez-le quand vous voulez, mais jusqu'à ce que vous sentez à l'aise avec l'ajout flair supplémentaire à votre demande il n'y a pas besoin de s'inquiéter de trop. Juste pour conclure une autre chose que vous aurez certainement envie de comprendre- en supposant que vous souhaitez intégrer fonctionnalités intéressantes et vous épargner un peu plus de code- serait d'inclure les bibliothèques 3ème partie. Voici le petit gars Android avec le chapeau de Sherlock Holmes. Il s'agit d'une barre d'action Sherlock bibliothèque, ce qui signifie essentiellement que la barre d'action que vous avez vu plus tôt, qui est maintenant la norme dans Ice Cream Sandwich et Jelly Bean, Si vous voulez apporter ce genre d'expérience utilisateur pour les utilisateurs de versions plus anciennes et vous sauver de se soucier de la façon dont l'utilisateur va naviguer sur les anciennes versions lorsque cette chose n'est pas là, vous pouvez inclure cette bibliothèque puis il vous suffit de référence plutôt que par défaut l'Android bibliothèques pour la barre d'action, vous référencez cette bibliothèque de support. Des choses comme Scoreloop, c'est génial si vous allez inclure un match. Il vous permet d'ajouter des classements et des réalisations de jeux. AdMob est une façon de mettre des annonces dans vos applications au cas où vous voulez faire un peu d'argent hors de lui. Bien sûr, il ya Facebook et Twitter pour y intégrant si vous voulez partager des choses facilement, et cetera. Dropbox, de même, et Google Analytics est ce graphique regardant là-bas. Ce sera très important si vous voulez vraiment voir qui est en interaction avec votre application ou qui il est, comment ils interagissent, et cetera. Google, par défaut, vous en dit beaucoup de statistiques sur qui a installé votre application et ce que les téléphones qu'ils ont, les versions des systèmes d'exploitation dont ils disposent. Mais si vous voulez voir qui l'utilise sur une base quotidienne et comment ils l'utilisent alors vous aurez envie d'inclure une sorte de système de suivi comme ça. Lorsque vous êtes prêt à distribuer votre application Je n'ai pas besoin d'aller dans ce trop de profondeur. Cliquez sur le lien ici, Google Play. Il sert à être le marché Android. Ils rebaptisés tout avec Google Play, Alors maintenant, vous vous soumettez à cela. C'est très simple. Vous devez inclure une description, des captures d'écran. Comme je le disais, il n'y a pas de processus d'approbation comme iOS. Et où aller à partir d'ici? Je vous ai montré un exemple très simple. Espérons que si cela semble terriblement simples alors c'est probablement un bon signe. Si vous du tout senti un peu confus ou incertain au sujet exactement ce que je tapais c'est aussi très bien, mais d'ici d'aller sur Google Guides. C'est un excellent endroit pour commencer. Il va vous parler à travers ce qu'ils attendent en termes de conception de l'application, la façon dont les utilisateurs interagissent normalement avec elle. Il est beaucoup plus libre que sous forme iOS, je dirais, où il semble que les vues de table sont-je ne sais pas, c'est leur pain et leur beurre. Tout est une vue de tableau glisser vers le haut et vers le bas. Avec Android ils ont certainement encourager les gens à regarder à partir tout un tas de différentes perspectives. Lorsque vous incluez le kit de développement de logiciels dans ce ADT Par défaut, vous avez tout un tas d'exemples de projets dans Android. Ici, Android, exemple de projet Android. Si je clique sur cette question, alors je peux choisir une version pour laquelle l'échantillon projets s'appliquent. Il ya tout un tas de choses différentes ici. Il commence avec l'action bar compatibilité, Lecture de l'accéléromètre, sauvegarde et restauration, Bluetooth, constructeur de geste. JetBoy est un jeu d'échantillons qu'ils vous donnent, comme c'est LunarLander. Il ya tout un tas d'exemples d'applications ici, et ils sont tous ciblés sur les différents aspects de l'API Android, et l'idée est que lorsque vous faites votre demande vous n'avez pas besoin de tout savoir sur Android pour faire une application Android. Vous n'avez qu'à en apprendre davantage sur les pièces que vous allez réellement utiliser. Regardez ces bibliothèques d'échantillons. N'hésitez pas à copier et coller le code et le réappliquer. C'est une excellente chose à regarder le code plus difficile et d'essayer de le comprendre, ce qui est bien sûr pourquoi CS50 nous vous donnons souvent de grandes quantités de code source. Regardez quelques-unes de ces si vous allez utiliser les bibliothèques similaires et ensuite l'appliquer à votre propre code. Et bien sûr, il ya des tutoriels. Rechercher des tutoriels. J'ai trouvé beaucoup de bons en ligne qui peut vous mettre au courant avec ce fragments sont vraiment et comment vous pouvez les utiliser. Certains de ces nouveaux conception des choses, comme des fragments, vous n'avez vraiment pas besoin d'être inquiet, sauf si vous faites une assez large dans le projet de portée. Ce sont des choses que Google cherche à éliminer po Stackoverflow est bien sûr de votre ami. J'espère que je vous ai vendu un peu sur Android, réaliser que c'est beaucoup plus facile d'approcher en termes de seulement la langue de codage. Java est, je dirais beaucoup plus facile à comprendre que l'Objective-C. Android est de plus en plus je pense que beaucoup plus que iOS. Je veux dire, les données sont là aussi, en dehors de ce que je pense. Ça va être autour pendant un moment, et ils sont quelques années de retard en fonction de leurs cycles de conception, si c'est un peu compréhensible qu'ils travaillent encore à travers certains de ces des questions de cohérence, comme cette barre d'action est une chose nouvelle pour eux encore, sorte de créer une expérience utilisateur similaire à travers toutes leurs applications. Nous espérons que vous pouvez aller de l'avant maintenant et ouvrir Eclipse et faire vos propres applications Android. Est-ce que quelqu'un a des questions avant de conclure quelque chose? Je peux vous dire que la réponse est 42. Eh bien, heureux de codage tout le monde, et bonne chance. [CS50.TV]