Quel langage de programmation apprendre pour le développement Android. Bases de programmation pour Android à l'aide de l'exemple du jeu Sudoku

Dans toute entreprise, le plus difficile est le début. Il est souvent difficile de se remettre dans son contexte, c'est ce que j'ai rencontré lorsque j'ai décidé de développer ma première application Android. Cet article s’adresse à ceux qui veulent commencer, mais ne savent pas par où.

L'article couvrira l'ensemble du cycle de développement d'applications. Ensemble, nous allons écrire un simple jeu de Tic-Tac-Toe avec un seul écran (sous Android OS, cela s'appelle Activity).

Manque d'expérience en développement Langage Java ne doit pas devenir un obstacle à la maîtrise d’Android. Ainsi, les exemples n'utiliseront pas de constructions spécifiques à Java (ou seront minimisés autant que possible). Si vous écrivez, par exemple, PHP et connaissez les principes fondamentaux du développement logiciel, cet article vous sera très utile. À mon tour, comme je ne suis pas un expert en développement Java, on peut supposer que source ne revendique pas le label « bonnes pratiques pour le développement Java ».

Installation des programmes et utilitaires nécessaires

Je vais lister les outils nécessaires. Il y en a 3 :

  1. IDE avec prise en charge du développement Android :
    • Plugin Eclipse + ADT ;
    • Édition communautaire IntelliJ IDEA ;
    • Plugin Netbeans + nbandroid ;

Les utilitaires sont installés dans l'ordre spécifié ci-dessus. Cela ne sert à rien d’installer tous les IDE répertoriés (sauf si vous avez des difficultés à choisir le bon). J'utilise IntelliJ IDEA Community Edition, l'un des IDE pour Java les plus avancés disponibles aujourd'hui.

Démarrer un appareil virtuel

En lançant AVD Manager et en installant forfaits supplémentaires(SDK différentes versions), vous pouvez commencer à créer un périphérique virtuel avec les paramètres nécessaires. Comprendre l'interface ne devrait pas être difficile.

Liste des périphériques

Créer un projet

J'ai toujours hâte de me mettre au travail, en minimisant les activités préparatoires, qui incluent la création d'un projet dans l'IDE, surtout lorsque le projet est éducatif et n'a pas l'intention d'être produit.

Donc, Fichier->Nouveau projet :

En appuyant sur le bouton F6, le projet sera assemblé, compilé et lancé sur l'appareil virtuel.

Structure du projet

La capture d'écran précédente montre la structure du projet. Puisque dans cet article nous poursuivons des objectifs purement pratiques, nous nous concentrerons uniquement sur les dossiers que nous utiliserons dans le processus de travail. Il s'agit des répertoires suivants : génération, rés Et src.

Dans le dossier génération certains fichiers sont générés automatiquement lors de la construction du projet. Vous ne pouvez pas les modifier manuellement.

Le dossier res est destiné à stocker des ressources telles que des images, des textes (y compris des traductions), des valeurs par défaut, des mises en page.

src- c'est le dossier dans lequel se déroulera l'essentiel du travail, car ici sont stockés les fichiers avec le code source de notre programme.

Premières lignes

Dès la création de l'Activité (écran de l'application), la méthode onCreate() est appelée. L'EDI l'a rempli de 2 lignes :
super.onCreate(savedInstanceState); setContentView(R.layout.main);
La méthode setContentView (équivalente à this.setContentView) définit la disposition XML de l'écran actuel. Dans ce qui suit, nous appellerons les layouts XML « layout » et les écrans « Activity ». La présentation dans l'application sera la suivante :

TableLayout est idéal pour cette application. L’identifiant peut être attribué à n’importe quelle ressource. Dans ce cas, TableLayout se voit attribuer id = main_l. En utilisant la méthode findViewById(), vous pouvez accéder à la vue :
mise en page TableLayout privée ; // il s'agit d'une propriété de la classe KrestikinolikiActivity public void onCreate(Bundle savingInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField( ); )

Nous devons maintenant implémenter la méthode buildGameField(). Pour ce faire, vous devez générer un champ sous forme de matrice. Cela sera fait par la classe Game. Vous devez d’abord créer une classe Square pour les cellules et une classe Player dont les objets rempliront ces cellules.

Carré.java

package com.exemple; Place de classe publique (privée Joueur joueur= nul ; public void fill(Player player) ( this.player = player; ) public boolean isFilled() ( if (player != null) ( return true; ) return false; ) public Player getPlayer() ( return player; ) )

Joueur.java

package com.exemple; public class Player (private String name; public Player(String name) ( this.name = name; ) public CharSequence getName() ( return (CharSequence) name; ) )

Toutes les classes de notre application se trouvent dans le dossier src.

Jeu.java

package com.exemple; public class Game ( /** * field */ private Square field; /** * Constructor * */ public Game() ( field = new Square; squareCount = 0; // remplissant le champ pour (int i = 0, l = champ.longueur;i

Initialisation du jeu dans le constructeur KrestikinolikiActivity.
public KrestikinolikiActivity() ( game = new Game(); game.start(); // sera implémenté plus tard)

La méthode buildGameField() de la classe KrestikinolikiActivity. Il ajoute dynamiquement des lignes et des colonnes au tableau (champ de jeu) :
boutons de bouton privés = nouveau bouton ; //(....) private void buildGameField() ( Square field = game.getField(); for (int i = 0, lenI = field.length; i
La ligne 8 crée un objet qui implémente l'interface View.OnClickListener. Créons une classe Listener imbriquée. Il ne sera visible que depuis KrestikinolikiActivity.
public class Listener implémente View.OnClickListener ( private int x = 0; private int y = 0; public Listener(int x, int y) ( this.x = x; this.y = y; ) public void onClick(View view) ( Bouton bouton = vue (Bouton); ) )
Reste à mettre en œuvre la logique du jeu.
public class Game ( /** * joueurs */ joueurs joueurs privés; /** * champ */ champ carré privé; /** * le jeu a-t-il commencé ? */ private boolean démarré ; /** * joueur actuel */ privé Joueur actifPlayer; /** * Compte le nombre de cellules remplies */ private int rempli; /** * Total de cellules */ private int squareCount; /** * Constructeur * */ public Game() ( field = new Square; squareCount = 0; // remplissant le champ pour (int i = 0, l = field.length; i

Détermination du gagnant

K.O. suggère que le gagnant du tic-tac-toe est celui qui aligne X ou O sur une longueur de ligne. égal à la longueur champs verticalement, horizontalement ou en diagonale. La première pensée qui me vient à l’esprit est d’écrire des méthodes pour chaque cas. Je pense que le modèle de chaîne de responsabilité fonctionnerait bien dans ce cas. Définissons l'interface
package com.exemple; interface publique WinnerCheckerInterface ( public Player checkWinner(); )
Puisque le jeu a la responsabilité de déterminer le gagnant, il implémente cette interface. Il est temps de créer des « juges de lignes » virtuels, chacun vérifiant son camp. Tous implémentent l’interface WinnerCheckerInterface.

WinnerCheckerHorizontal.java

package com.exemple; classe publique WinnerCheckerHorizontal implémente WinnerCheckerInterface (privé Jeu de jeu; public WinnerCheckerHorizontal(Game game) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = field.length; je

WinnerCheckerVertical.java

package com.exemple; public class WinnerCheckerVertical implémente WinnerCheckerInterface ( jeu privé; public WinnerCheckerVertical (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = champ.longueur ; i

WinnerCheckerDiagonalLeft.java

package com.exemple; public class WinnerCheckerDiagonalLeft implémente WinnerCheckerInterface ( jeu privé ; public WinnerCheckerDiagonalLeft (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer ; Player lastPlayer = null ; int successCounter = 1 ; pour (int i = 0, len = field.length ; i

WinnerCheckerDiagonalRight.java

package com.exemple; classe publique WinnerCheckerDiagonalRight implémente WinnerCheckerInterface ( jeu privé ; public WinnerCheckerDiagonalRight (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer ; Player lastPlayer = null ; int successCounter = 1 ; pour (int i = 0, len = field.length ; i
Initialisons-les dans le constructeur Game :
//(....) /** * "Juges" =). Après chaque coup, ils vérifieront * pour voir s'il y a un gagnant */privé WinnerCheckerInterface gagnantCheckers ; //(....) public Game() ( //(....) gagnantCheckers = nouveau WinnerCheckerInterface; gagnantCheckers = nouveau WinnerCheckerHorizontal(this); gagnantCheckers = nouveau WinnerCheckerVertical(this); gagnantCheckers = nouveau WinnerCheckerDiagonalLeft(this); gagnantCheckers = new WinnerCheckerDiagonalRight(this); //(....) )
Implémentation de checkWinner() :
public Player checkWinner() ( pour (WinnerCheckerInterface winChecker: gagnantCheckers) ( Joueur gagnant = winChecker.checkWinner(); if (winner != null) ( return gagnant; ) ) return null; )
Nous vérifions le gagnant après chaque coup. Ajoutons du code à la méthode onClick() de la classe Listener
public void onClick(Afficher la vue) ( ​​Bouton bouton = (Bouton) vue ; Jeu g = jeu ; Joueur joueur = g.getCurrentActivePlayer(); if (makeTurn(x, y)) ( bouton.setText(player.getName()) ; ) Joueur gagnant = g.checkWinner(); if (winner != null) ( gameOver(winner); ) if (g.isFieldFilled()) ( // si le champ est rempli gameOver(); ) )
La méthode gameOver() est implémentée en 2 variantes :
private void gameOver (Joueur joueur) ( CharSequence text = "Joueur \"" + joueur.getName() + "\" gagné!"; Toast.makeText(this, texte, Toast.LENGTH_SHORT).show(); game.reset (); rafraîchir(); ) private void gameOver() ( CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); rafraîchir(); )
Pour Java, gameOver(Player player) et gameOver() - différentes méthodes. En utilisant le Builder Toast.makeText, vous pouvez créer et afficher rapidement une notification.fresh() met à jour l'état du champ :
private void rafraîchir() ( Square field = game.getField(); for (int i = 0, len = field.length; i

Prêt! J'espère que cet article vous a aidé à vous familiariser avec le monde du développement Android. Merci de votre attention!

Vidéo de la candidature terminée

salle d'opération Système Android chaque année, il devient non seulement un système d'exploitation adapté à utilisateurs ordinaires, mais aussi une plateforme puissante pour les développeurs. Eh bien, que pouvez-vous faire : Google rencontre toujours les développeurs à mi-chemin, en leur offrant de nombreuses opportunités et des outils puissants, assaisonnés d'une documentation informative.
De plus, il ne faut pas perdre de vue que le « robot vert » est le leader en termes de popularité parmi les téléphones mobiles. systèmes d'exploitation. Cela suggère qu'en programmant pour Android, vous aurez un large public, ce qui pourra ensuite générer des bénéfices. En général, Android est une sorte d’« oasis » pour les développeurs. C'est pourquoi nous avons préparé pour vous une sélection spéciale de langages de programmation, ainsi que des environnements de développement pour ce système d'exploitation.
Attention, un petit conseil pour les débutants
: La programmation Android peut paraître difficile ou trop monotone au premier abord. Astuce : consultez les liens vers une documentation utile avant de commencer, et la programmation sur Android ne sera alors plus un problème pour vous.

Java est l'outil principal des développeurs Android

Environnements de développement: Android Studio (IntelliJ IDEA), plugin Eclipse + ADT
Convient à un large éventail de tâches
Java est le langage principal des programmeurs Android, un incontournable pour les débutants. Source principale Code Androidécrit dans cette langue, il est donc facile de comprendre pourquoi la plupart des gens choisissent cette langue. Les applications écrites en Java s'exécutent sur Android en utilisant machine virtuelle ART (ou Dalvik dans Jelly Bean et plus versions précédentes Android) est un analogue de la machine virtuelle Java, à cause de laquelle Google a de sérieux litiges avec Oracle.

Google supporte actuellement officiellement un framework assez puissant Développement Android Studio, basé sur Intellij IDEA de JetBrains. N'oubliez pas non plus la documentation très détaillée de Google, qui couvre tout, de match_parent et wrap_content aux constructeurs, constantes et méthodes principales de la classe JavaHttpConnection - cela vaut vraiment la peine d'être lu.

N'oubliez pas non plus Eclipse, un environnement très populaire pour les programmeurs Java. Avec le plugin ADT officiel de Google, cette boîte à outils deviendra une arme puissante et légère entre vos mains. Mais les gars de Mountain View ont cessé de prendre en charge Eclipse depuis l'été dernier, laissant la place au nouveau Android Studio. Recommandé pour une utilisation sur des PC faibles.

Documents requis :

Le C++ est un outil puissant entre les mains d'un maître

Principaux environnements de développement: Android Studio (version 1.3 et supérieure), Visual Studio 2015, QtCreator
Convient à moteurs de jeux et applications gourmandes en ressources.
C++ est un langage de programmation d'âge moyen mais très puissant qui a célébré son trentième anniversaire l'année dernière. Il a été inventé en 1985 grâce aux efforts du camarade Björn Stroustrup et occupe toujours premières positions langages de programmation les plus populaires. Les « Pros » vous donnent une totale liberté d'action, vous limitant uniquement à ce qui est raisonnable.


Au cours de toute l’existence d’Android, de nombreux frameworks et outils de développement pour C++ ont été créés. Je voudrais particulièrement souligner les célèbres Qt et IDE QtCreator, qui vous permettent de développer des applications multiplateformes pour Windows, Windows Phone, Windows RT, iOS, SailfishOS et Android (une fois que cette liste incluait également Symbian). De plus, vous bénéficiez d'une bibliothèque Tulip pratique de conteneurs, d'algorithmes et de modèles, qui absorbe le meilleur de Java et d'Android. Et enfin, vous disposez de nombreux modules QT différents pour un travail de haut et de bas niveau avec le système. Votre humble serviteur code spécifiquement en C++ et Qt.

L'année dernière, lors de la conférence Windows : The Next Champter, une large attention a été accordée à l'environnement de développement assez populaire Visual Studio 2015. L'une des principales innovations était la prise en charge du développement d'applications pour Windows Phone et Android - Microsoft a tenté d'augmenter le nombre d'applications pour votre système d'exploitation.

Il est également impossible de ne pas mentionner que Android officiel Studio a commencé à prendre en charge NDK. Avec l'aide du NDK, vous pouvez utiliser les graphiques OpenGL lorsque vous travaillez avec Android. Si vous avez besoin de rapidité et d'efficacité, choisissez NDK ! Cette méthode de développement est parfaite pour les moteurs de jeux nécessitant des performances élevées.

Développer Android en C ou C++ peut paraître plus simple qu'en Java, mais malgré le fait que le langage vous offre une totale liberté d'action et ne vous limite pas dans vos démarches, il possède certaines fonctionnalités spécifiques qui prendront beaucoup de temps à apprendre - ce n'est pas sans raison que le C++ a été comparé aux nunchakus (une excellente arme qui nécessite malheureusement une grande habileté). Cependant, développer des applications Android en C et C++ peut être amusant.

Documents requis :

Autres langues

Il est maintenant temps de parler d'autres langages et frameworks moins populaires, mais également intéressants pour eux. Cependant, pour de nombreuses raisons, vous n’aurez pas autant de succès qu’avec Java et C++.

Corona (Script LUA)


Convient à création de jeux et applications simples
Si, pour une raison quelconque, vous ne souhaitez pas apprendre Java ou comprendre la création d'une interface via XML, vous pouvez choisir cet IDE pour vous-même. Corona est un environnement de développement assez léger, dont le code doit être écrit dans un LUA assez léger (les amateurs de Pascal l'apprécieront).

Cette boîte à outils vous aidera à écrire des jeux 2D simples, pour lesquels il existe des bibliothèques d'objets 2D, de sons, de réseau et de moteur de jeu. Les jeux créés fonctionnent avec OpenGL, ce qui signifie une grande efficacité. Idéal pour les débutants, c'est peut-être ici que vous pourrez créer votre premier application mobile sur Androïd !


Documents requis :

Adobe PhoneGap (HTML5, JavaScript, CSS)


Convient à créer des applications peu gourmandes en ressources
Si vous êtes déjà familier avec HTML, CSS et JavaScript, vous pouvez essayer PhoneGap comme alternative. Cet IDE vous permettra de créer des applications à part entière développées dans les langages de programmation et de balisage mentionnés ci-dessus.

En fait, les applications prêtes à l'emploi de PhoneGap sont les WebViews les plus simples, animées par Aide Java Scénario. À l'aide de diverses API, vous pouvez utiliser diverses fonctionnalités de l'appareil, tout comme dans les applications natives. Ce qui est intéressant, c'est que les applications sont compilées sur le serveur puis disponibles pour une utilisation sur iOS, Android, Windows Phone, Web OS et BlackBerry OS. Avec des fonctionnalités multiplateformes aussi étendues, le développement d’applications peut s’accélérer considérablement.


Documents requis :

Fusible (JavaScript et UX)


Convient à créer des applications simples et complexes
Lorsque les gens parlent d’outils de développement Android, ils pensent souvent à Fuse. Cet outil est l’un des plus conviviaux du genre et peut présenter un large éventail de possibilités et d’avantages au développeur.

La logique principale des applications Fuse repose sur JavaScript, un langage simple et compréhensible avec un seuil d'entrée bas. La base de l'interface est représentée par le balisage UX - intuitivement compréhensible pour tout le monde. Eh bien, les « petits pains » de l'environnement vous permettront d'appliquer les modifications directement pendant que l'application est en cours d'exécution sur votre appareil ou votre émulateur - tout comme dans Android Studio 2.0 et supérieur. Avec Fuse, le développement d’applications Android peut être simple et agréable.

Documents requis :

Les mots "vers la fin"

Bien entendu, nous ne vous avons pas montré tous les outils de développement actuellement existants. Avec cet article nous voulions vous expliquer que devenir développeur Android n’est pas si difficile, même si cela demande souvent des efforts et de la persévérance. Le monde du développement pour plateformes mobiles vous est ouvert, mais rappelez-vous : la première étape vous appartient toujours.

Le système d'exploitation Android est installé sur 66,71% de tous appareils mobiles dans le monde. Il n’est donc pas surprenant que de nombreux informaticiens débutants souhaitent réaliser leurs ambitions sur cette plateforme.

Tout récemment sur GeekBrains, nous avons évoqué plateformes mobiles, mais cette fois, nous examinerons de plus près Android. Voici 10 langages qui vous permettront de créer une application mobile de tout type et complexité :

Java

Il ne serait pas exagéré de qualifier Java d'officiel Langue Android. En tout cas, presque toute la documentation pédagogique, tous les cours en ligne sont basés sur cela. C'est aussi le langage le plus populaire selon TIOBE, le deuxième en nombre de sources sur GitHub, et généralement de grande taille. un beau language. C'est pourquoi l'apprentissage de Java devrait être une priorité absolue pour tout développeur Android. Même si ce ne sera pas facile (après tout, la langue a 22 ans et la facilité n'a jamais été son point fort), même si théoriquement on peut se débrouiller avec des langues plus modernes, rappelez-vous : il est impossible d'obtenir un succès significatif sur Android sans comprendre absolument Java, sans parler des codes sources spécifiques.

C#

Avec tout le scepticisme sans fin à l’égard des produits Microsoft, il vaut la peine d’admettre que C# ne le mérite pas. Il s'agit d'un langage merveilleux qui a absorbé tout le meilleur de Java, tout en prenant en compte et en corrigeant de nombreuses lacunes.

Lorsqu'il s'agit de développement d'applications Android, vous disposez de l'un des environnements les plus fonctionnels : Visual et Xamarin Studio. Et connaître C# sera un avantage appréciable pour vous lorsque vous commencerez à utiliser Unity 3D. Avec cet ensemble, les possibilités sont infinies.

Python

Le fait qu'Android ne prend pas en charge en utilisant Python pour créer applications natives, ne veut pas dire que c'est impossible. Les fans de ce langage serpent ont développé de nombreux outils qui vous permettent de compiler du code Python dans l'état requis.

Le framework le plus populaire est Kivy, qui peut facilement vous aider à créer une application pour Jouer au marché en Python pur. Et sinon, de gentils développeurs vous aideront dans le chat. Si vous ne le maîtrisez pas encore, nous vous recommandons de le suivre.

Kotlin

Dans le texte sur, j'ai déjà essayé d'expliquer pourquoi Kotlin lui-même est un excellent langage, et en combinaison avec Java, il est encore meilleur. En effet, officiellement lancé il y a seulement un an, Kotlin conquiert rapidement le cœur des développeurs du monde entier grâce à son absence quasi totale de défauts.

Avec son aide (plus précisément, avec l'aide de l'environnement natif IntelliJ IDEA), vous ne ressentirez aucun problème pour développer des applications natives pour Android. Dans le même temps, la demande de spécialistes Kotlin est encore faible, ce qui signifie qu'en acquérant de l'expérience en travaillant avec celui-ci, vous risquez d'acquérir un avantage concurrentiel à l'avenir.

Langages Web

Ensemble de langages de travail Web standard : HTML, CSS et JavaScript. Sans connaître ces 3 langages, vous vous réduisez à développer des applications avec une finalité assez étroite. Même si vous êtes directement sur le web travail futur Si vous ne voulez pas y toucher, il est peu probable que vous puissiez éviter les applications hybrides.

Vous pouvez travailler avec HTML, CSS et JavaScript en utilisant l'environnement PhoneGap Build ou, dans un cas plus spécialisé, Adobe Cordova. Ils ne nécessiteront pas beaucoup de connaissances de votre part, mais donneront des résultats. Ou du dernier, React Native de Facebook est le prochain niveau de facilité d'interaction, mais peu d'expérience et de documentation ont été accumulées. En général, choisissez, heureusement il y a l'embarras du choix.

Lua

Un langage plus ancien que Java, beaucoup moins populaire, mais toujours demandé. Il présente de nombreux avantages, comme le typage dynamique et une syntaxe relativement simple, mais il a survécu jusqu'à nos jours grâce à son implication dans les jeux. C'est la commodité de créer une couche logicielle entre le moteur et le shell qui a ouvert la porte à Lua au monde des gadgets de poche.

Corona SDK est un environnement de développement d'applications mobiles multiplateformes, principalement des jeux, dont l'outil principal est Lua. Depuis 2015, il est distribué gratuitement, conçu pour les développeurs débutants, et vous pouvez en trouver beaucoup informations utiles, tant sur les segments anglophones que russophones de l'Internet.

C/C++

Google propose en effet aux développeurs deux environnements de développement : le SDK, conçu pour fonctionner avec Java, et le NDK, où les langages natifs sont le C/C++. Oui, bien sûr, vous n’écrirez pas une application entière en utilisant uniquement ces langages, mais avec leur aide, vous pourrez créer une bibliothèque que vous pourrez ensuite connecter au corps principal du programme à l’aide de Java.

Même si la grande majorité des développeurs ne se soucient pas du NDK, en utilisant cet outil, vous obtiendrez de meilleurs résultats en termes de performances et d'utilisation des ressources internes. Et c'est exactement ce qui distingue Android bonne idée applications d’une bonne mise en œuvre.

Dans quelles langues écrivez-vous ?

Ce didacticiel vous apprendra les bases de la création d'une application Android à l'aide de l'environnement de développement Android Studio. Les appareils Android sont de plus en plus courants et la demande de nouvelles applications ne fait qu'augmenter. Android Studio est un environnement de développement gratuit et facile à utiliser.

Pour ce tutoriel, il est préférable que vous ayez au moins une connaissance passagère de Java puisque c'est le langage utilisé par Android. Il n'y aura pas trop de code dans ce tutoriel puisque je suppose que vous avez une certaine connaissance de Java ou que vous êtes prêt à trouver quelque chose que vous ne connaissez pas déjà. La création d'une application prendra 30 à 60 minutes, selon la rapidité avec laquelle vous téléchargez et installez tous les programmes nécessaires. Après avoir suivi ce didacticiel sur la création de votre première application Android, vous pourriez vous trouver un nouveau passe-temps amusant ou même commencer une carrière de développeur d'applications mobiles en herbe.

Étape 1 : Installer Android Studio

  1. Vous devez installer le JDK ( Kit de développement Java) et JRE (Java Runtime Environment). Vous pouvez le télécharger à partir de ce lien. Là, vous sélectionnez la version de votre système d'exploitation, acceptez le contrat de licence, téléchargez et installez.
  2. Allez maintenant ici http://developer.android.com/sdk/index.html et téléchargez (attention, vous devrez télécharger environ 3 gigaoctets).
  3. Nous commençons l'installation et suivons les instructions.

Étape 2 : Créer un nouveau projet

  1. Ouvrez Android Studio.
  2. Au menu " Démarrage rapide", sélectionner " Démarrer un nouveau projet Android Studio».
  3. Dans la fenêtre " Créer un nouveau projet"(la fenêtre qui s'est ouverte), nommez votre projet" Bonjour le monde».
  4. Nom de l'entreprise (facultatif.*
  5. Cliquez sur " Suivant».
  6. Assurez-vous que la case à cocher est uniquement sur " Téléphone et tablette».
  7. Si vous envisagez de tester votre première application sur votre téléphone, assurez-vous que version correcte Android (pas plus ancien que celui du téléphone).
  8. Cliquez sur " Suivant».
  9. Sélectionner " Activité vide».
  10. Cliquez sur " Suivant».
  11. Laissez tous les autres champs tels quels.
  12. Cliquez sur " Finition».

*Le nom typique de l'entreprise pour les projets Android est « example.name.here.com ».

Étape 3 : Modification du message d'accueil

  1. Allez dans l'onglet activité_principal.xml, il est très probablement déjà actif.
  2. Assurez-vous que l'onglet en bas de l'écran est actif Conception(c'est très probablement vrai).
  3. Faites glisser la phrase " Bonjour, Monde! » de gauche coin supérieur téléphone au centre de l’écran.
  4. Sur le côté gauche de l'écran se trouve une arborescence de dossiers. Ouvrez le dossier appelé " valeurs».
  5. Dans ce dossier, double-cliquez sur le fichier " cordes.xml».
  6. Dans ce fichier, recherchez la ligne contenant le texte « Bonjour le monde!" et ajouter à ce texte " Accueilliràmonapplication! ».
  7. Retour au " activité_principal.xml».
  8. Assurez-vous que votre texte est centré sur l'écran de votre téléphone et contient le texte " Bonjourmonde! Accueilliràmonapplication! ».

Étape 4 : Ajouter un bouton

  1. Sur le " activité_principal.xml" sélectionnez l'onglet " Conception».
  2. Dans la colonne à gauche de la fenêtre où se trouve le téléphone, recherchez un dossier intitulé " Widgets" Il y a différents boutons là-bas.
  3. Saisissez le " Bouton» et faites-le glisser sur l'écran de votre téléphone. Il doit être centré sur l’écran juste en dessous de votre texte.
  4. Assurez-vous que le bouton est toujours sélectionné (cadre bleu autour).
  5. Dans le coin inférieur droit se trouve une fenêtre avec les propriétés de l'objet sélectionné. Faites défiler vers le bas et recherchez la ligne intitulée " texte».
  6. Changez le texte " Nouveau bouton" sur " Page suivante».

Étape 5 : Créer une deuxième activité

  1. En haut de l'arborescence du système de fichiers du projet, cliquez sur clic-droit souris sur le dossier appelé " application».
  2. Sélectionner Nouveau > Activité > Activité vide.
  3. Dans la fenêtre qui apparaît, sur la ligne du haut, saisissez « Deuxième activité».
  4. Cliquez sur " Finition».
  5. Allez dans le " activité_deuxième.xml" et assurez-vous que l'onglet " est sélectionné en bas Conception».
  6. Déplacez le texte du coin supérieur gauche du téléphone vers le centre de l'écran comme nous l'avons fait dans les étapes précédentes.
  7. Sois sûr que bloc de texte est toujours sélectionné (cadre bleu) et dans le coin inférieur droit des propriétés de l'objet, recherchez la ligne " identifiant" et entrez là " texte2 ».
  8. Dans le coin supérieur gauche (dans l'arborescence du projet), sélectionnez à nouveau double-cliquez « cordes.xml».
  9. Sous la ligne Bonjour le monde! Bienvenue sur mon application !

    ajoutez la ligne suivante

    Bienvenue sur la deuxième page !

  10. Retour au " activité_seconde.xml».
  11. Sélectionnez à nouveau le bloc de texte.
  12. Dans le coin inférieur droit des propriétés de l'objet, recherchez la ligne " texte" et entrez là «@ chaîne/deuxième_page».
  13. Assurez-vous que la zone de texte indique maintenant " Accueilliràledeuxièmepage! » et le blog est situé au centre de l'écran.

Étape 6 : Écrire l'action du bouton


Étape 7 : Tester l'application

  1. Dans la barre d'outils en haut de la fenêtre Android Studio, cliquez sur le symbole de lecture vert.
  2. Dans la fenêtre " ChoisirAppareil» sélectionnez l'élément « Lancementémulateur» et sélectionnez l'appareil.
  3. Cliquez sur le bouton D'ACCORD».
  4. Lorsque l'émulateur démarre (cela peut prendre du temps), l'application s'ouvrira automatiquement sur le périphérique virtuel.
  5. Assurez-vous que tout le texte s'affiche correctement et que cliquer sur le bouton vous amène à la page suivante.

Attention: Si vous recevez le message " Le module du noyau HAX n'est pas installé !", alors il y a deux options possibles. Le fait est que cette virtualisation n'est prise en charge que par les systèmes modernes Processeurs Intel et il vous suffit de l'activer dans le BIOS. Si vous disposez d'un processeur qui ne prend pas en charge cette fonctionnalité, vous devrez tester l'application sur vrai téléphone ou utilisez un émulateur tiers plutôt que celui intégré.

Comment obtenir un fichier .apk dans Android Studio

À mon avis, cette question est bien abordée dans cet article, je ne la répéterai donc pas. J'ai trouvé ça plus facile pour la première leçon Méthode manuelle.

Une fois que vous recevez le fichier, vous pouvez le copier sur votre téléphone et installer l'application.

Étape 8 : Résultat

Toutes nos félicitations! Vous venez de terminer l'écriture de votre première application Android avec quelques fonctionnalités de base. L'application terminée doit avoir une page d'accueil de l'utilisateur et un bouton qui amènera l'utilisateur à la deuxième page.

Vous vous êtes brièvement familiarisé avec le développement d'applications pour Android et avez peut-être éveillé en vous le désir d'apprendre tout ce qui est nécessaire pour évoluer davantage dans cette direction.

Dans toute entreprise, le plus difficile est le début. Il est souvent difficile de se remettre dans son contexte, c'est ce que j'ai rencontré lorsque j'ai décidé de développer ma première application Android. Cet article s’adresse à ceux qui veulent commencer, mais ne savent pas par où.

L'article couvrira l'ensemble du cycle de développement d'applications. Ensemble, nous allons écrire un simple jeu de Tic-Tac-Toe avec un seul écran (sous Android OS, cela s'appelle Activity).

Le manque d’expérience en développement Java ne devrait pas être un obstacle à la maîtrise d’Android. Ainsi, les exemples n'utiliseront pas de constructions spécifiques à Java (ou seront minimisés autant que possible). Si vous écrivez, par exemple, PHP et connaissez les principes fondamentaux du développement logiciel, cet article vous sera très utile. À mon tour, comme je ne suis pas un expert en développement Java, on peut supposer que le code source ne peut pas prétendre au label « meilleures pratiques pour le développement Java ».

Installation des programmes et utilitaires nécessaires

Je vais lister les outils nécessaires. Il y en a 3 :

  1. IDE avec prise en charge du développement Android :
    • Plugin Eclipse + ADT ;
    • Édition communautaire IntelliJ IDEA ;
    • Plugin Netbeans + nbandroid ;

Les utilitaires sont installés dans l'ordre spécifié ci-dessus. Cela ne sert à rien d’installer tous les IDE répertoriés (sauf si vous avez des difficultés à choisir le bon). J'utilise IntelliJ IDEA Community Edition, l'un des IDE pour Java les plus avancés disponibles aujourd'hui.

Démarrer un appareil virtuel

Après avoir lancé AVD Manager et installé des packages supplémentaires (SDK de différentes versions), vous pouvez commencer à créer un périphérique virtuel avec les paramètres nécessaires. Comprendre l'interface ne devrait pas être difficile.

Liste des périphériques

Créer un projet

J'ai toujours hâte de me mettre au travail, en minimisant les activités préparatoires, qui incluent la création d'un projet dans l'IDE, surtout lorsque le projet est éducatif et n'a pas l'intention d'être produit.

Donc, Fichier->Nouveau projet :

En appuyant sur le bouton F6, le projet sera assemblé, compilé et lancé sur l'appareil virtuel.

Structure du projet

La capture d'écran précédente montre la structure du projet. Puisque dans cet article nous poursuivons des objectifs purement pratiques, nous nous concentrerons uniquement sur les dossiers que nous utiliserons dans le processus de travail. Il s'agit des répertoires suivants : génération, rés Et src.

Dans le dossier génération certains fichiers sont générés automatiquement lors de la construction du projet. Vous ne pouvez pas les modifier manuellement.

Le dossier res est destiné à stocker des ressources telles que des images, des textes (y compris des traductions), des valeurs par défaut, des mises en page.

src- c'est le dossier dans lequel se déroulera l'essentiel du travail, car ici sont stockés les fichiers avec le code source de notre programme.

Premières lignes

Dès la création de l'Activité (écran de l'application), la méthode onCreate() est appelée. L'EDI l'a rempli de 2 lignes :
super.onCreate(savedInstanceState); setContentView(R.layout.main);
La méthode setContentView (équivalente à this.setContentView) définit la disposition XML de l'écran actuel. Dans ce qui suit, nous appellerons les layouts XML « layout » et les écrans « Activity ». La présentation dans l'application sera la suivante :

TableLayout est idéal pour cette application. L’identifiant peut être attribué à n’importe quelle ressource. Dans ce cas, TableLayout se voit attribuer id = main_l. En utilisant la méthode findViewById(), vous pouvez accéder à la vue :
mise en page TableLayout privée ; // il s'agit d'une propriété de la classe KrestikinolikiActivity public void onCreate(Bundle savingInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (TableLayout) findViewById(R.id.main_l); buildGameField( ); )

Nous devons maintenant implémenter la méthode buildGameField(). Pour ce faire, vous devez générer un champ sous forme de matrice. Cela sera fait par la classe Game. Vous devez d’abord créer une classe Square pour les cellules et une classe Player dont les objets rempliront ces cellules.

Carré.java

package com.exemple; public class Square ( private Player player = null; public void fill(Player player) ( this.player = player; ) public boolean isFilled() ( if (player != null) ( return true; ) return false; ) public Player getPlayer () (retourner le joueur ; ) )

Joueur.java

package com.exemple; public class Player (private String name; public Player(String name) ( this.name = name; ) public CharSequence getName() ( return (CharSequence) name; ) )

Toutes les classes de notre application se trouvent dans le dossier src.

Jeu.java

package com.exemple; public class Game ( /** * field */ private Square field; /** * Constructor * */ public Game() ( field = new Square; squareCount = 0; // remplissant le champ pour (int i = 0, l = champ.longueur;i

Initialisation du jeu dans le constructeur KrestikinolikiActivity.
public KrestikinolikiActivity() ( game = new Game(); game.start(); // sera implémenté plus tard)

La méthode buildGameField() de la classe KrestikinolikiActivity. Il ajoute dynamiquement des lignes et des colonnes au tableau (champ de jeu) :
boutons de bouton privés = nouveau bouton ; //(....) private void buildGameField() ( Square field = game.getField(); for (int i = 0, lenI = field.length; i
La ligne 8 crée un objet qui implémente l'interface View.OnClickListener. Créons une classe Listener imbriquée. Il ne sera visible que depuis KrestikinolikiActivity.
public class Listener implémente View.OnClickListener ( private int x = 0; private int y = 0; public Listener(int x, int y) ( this.x = x; this.y = y; ) public void onClick(View view) ( Bouton bouton = vue (Bouton); ) )
Reste à mettre en œuvre la logique du jeu.
public class Game ( /** * joueurs */ joueurs joueurs privés; /** * champ */ champ carré privé; /** * le jeu a-t-il commencé ? */ private boolean démarré ; /** * joueur actuel */ privé Joueur actifPlayer; /** * Compte le nombre de cellules remplies */ private int rempli; /** * Total de cellules */ private int squareCount; /** * Constructeur * */ public Game() ( field = new Square; squareCount = 0; // remplissant le champ pour (int i = 0, l = field.length; i

Détermination du gagnant

K.O. suggère que le gagnant du tic-tac-toe est celui qui aligne X ou O sur une ligne égale à la longueur du terrain verticalement, horizontalement ou en diagonale. La première pensée qui me vient à l’esprit est d’écrire des méthodes pour chaque cas. Je pense que le modèle de chaîne de responsabilité fonctionnerait bien dans ce cas. Définissons l'interface
package com.exemple; interface publique WinnerCheckerInterface ( public Player checkWinner(); )
Puisque le jeu a la responsabilité de déterminer le gagnant, il implémente cette interface. Il est temps de créer des « juges de lignes » virtuels, chacun vérifiant son camp. Tous implémentent l’interface WinnerCheckerInterface.

WinnerCheckerHorizontal.java

package com.exemple; public class WinnerCheckerHorizontal implémente WinnerCheckerInterface (private Game game; public WinnerCheckerHorizontal(Game game) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = champ.longueur ; i

WinnerCheckerVertical.java

package com.exemple; public class WinnerCheckerVertical implémente WinnerCheckerInterface ( jeu privé; public WinnerCheckerVertical (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer; Player lastPlayer = null; for (int i = 0, len = champ.longueur ; i

WinnerCheckerDiagonalLeft.java

package com.exemple; public class WinnerCheckerDiagonalLeft implémente WinnerCheckerInterface ( jeu privé ; public WinnerCheckerDiagonalLeft (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer ; Player lastPlayer = null ; int successCounter = 1 ; pour (int i = 0, len = field.length ; i

WinnerCheckerDiagonalRight.java

package com.exemple; classe publique WinnerCheckerDiagonalRight implémente WinnerCheckerInterface ( jeu privé ; public WinnerCheckerDiagonalRight (jeu) ( this.game = game; ) public Player checkWinner() ( Square field = game.getField(); Player currPlayer ; Player lastPlayer = null ; int successCounter = 1 ; pour (int i = 0, len = field.length ; i
Initialisons-les dans le constructeur Game :
//(....) /** * "Juges" =). Après chaque coup, ils vérifieront * pour voir s'il y a un gagnant */privé WinnerCheckerInterface gagnantCheckers ; //(....) public Game() ( //(....) gagnantCheckers = nouveau WinnerCheckerInterface; gagnantCheckers = nouveau WinnerCheckerHorizontal(this); gagnantCheckers = nouveau WinnerCheckerVertical(this); gagnantCheckers = nouveau WinnerCheckerDiagonalLeft(this); gagnantCheckers = new WinnerCheckerDiagonalRight(this); //(....) )
Implémentation de checkWinner() :
public Player checkWinner() ( pour (WinnerCheckerInterface winChecker: gagnantCheckers) ( Joueur gagnant = winChecker.checkWinner(); if (winner != null) ( return gagnant; ) ) return null; )
Nous vérifions le gagnant après chaque coup. Ajoutons du code à la méthode onClick() de la classe Listener
public void onClick(Afficher la vue) ( ​​Bouton bouton = (Bouton) vue ; Jeu g = jeu ; Joueur joueur = g.getCurrentActivePlayer(); if (makeTurn(x, y)) ( bouton.setText(player.getName()) ; ) Joueur gagnant = g.checkWinner(); if (winner != null) ( gameOver(winner); ) if (g.isFieldFilled()) ( // si le champ est rempli gameOver(); ) )
La méthode gameOver() est implémentée en 2 variantes :
private void gameOver (Joueur joueur) ( CharSequence text = "Joueur \"" + joueur.getName() + "\" gagné!"; Toast.makeText(this, texte, Toast.LENGTH_SHORT).show(); game.reset (); rafraîchir(); ) private void gameOver() ( CharSequence text = "Draw"; Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); game.reset(); rafraîchir(); )
Pour Java, gameOver(Player player) et gameOver() sont des méthodes différentes. En utilisant le Builder Toast.makeText, vous pouvez créer et afficher rapidement une notification.fresh() met à jour l'état du champ :
private void rafraîchir() ( Square field = game.getField(); for (int i = 0, len = field.length; i

Prêt! J'espère que cet article vous a aidé à vous familiariser avec le monde du développement Android. Merci de votre attention!

Vidéo de la candidature terminée