Codage d'applications Android fonctionnelles dans Kotlin Mise en route

Alors que la grande majorité des applications Android sont écrites en Java, il n’ya aucune règle selon laquelle avoir utiliser Java pour le développement Android. Il existe toute une gamme de langages de programmation modernes conçus pour fonctionner sur la machine virtuelle Java (JVM), et l'un de ces langages qui gagne en popularité dans la communauté Java est Kotlin.. 

Dans la première partie de cette série en trois parties, nous avons examiné ce qu'est Kotlin et ce qu'il a à offrir aux développeurs Android:

  • Il est 100% interchangeable avec Java, au point que vous pouvez continuer à utiliser les bibliothèques et les infrastructures Java existantes et même utiliser un mélange de code Java et Kotlin dans vos projets Android.. 
  • Sa syntaxe est conçue de manière à ressembler beaucoup à Java, ce qui signifie que les développeurs Java devraient pouvoir se familiariser avec les principes fondamentaux de Kotlin..
  • Il combine des fonctionnalités et des concepts de la programmation fonctionnelle et procédurale.
  • C'est bien supporté par Android Studio. 

Dans ce tutoriel de suivi, nous allons commencer avec un développement réel de Kotlin. Au moment où vous arrivez à la fin du didacticiel, vous avez créé une application Android simple qui affiche une ligne de texte et qui est entièrement écrite en Kotlin. Vous saurez également comment éviter d’avoir à écrire un autre findViewById, en utilisant les extensions Android de Kotlin.

Mais d'abord, il est temps d'enseigner à notre environnement de développement comment parler une nouvelle langue!  

Installation du plugin Kotlin dans Android Studio

La toute première chose à faire est d’ajouter le support Kotlin à votre installation Android Studio..

Avant de commencer, assurez-vous que vous utilisez la version la plus récente et la plus stable d'Android Studio, car vous êtes plus susceptible de rencontrer des bogues avec le plugin Kotlin sur les versions expérimentales d'Android Studio. Il est également intéressant d’ouvrir le SDK Manager et de vérifier si des mises à jour sont disponibles pour les packages que vous avez installés..

Une fois que vous êtes sûr que votre environnement de développement est à jour, vous êtes prêt à installer le plugin Kotlin. Lancez Android Studio et vous devriez voir le Bienvenue sur Android Studio window -si cette fenêtre n'apparaît pas, fermez complètement Android Studio et relancez-la.

Donner la Configurer icône un clic, puis sélectionnez Plugins de la liste déroulante suivante.

Clique le Installez les plugins JetBrains… bouton.

Sélectionner Kotlin dans le menu, puis cliquez sur le vert Installer bouton. Vous devrez redémarrer votre IDE avant que le plugin Kotlin ne devienne actif. Cliquez sur le bouton Redémarrer Android Studio bouton qui apparaît ou redémarrez votre IDE manuellement.

Configurer votre projet pour utiliser Kotlin

À ce stade, votre IDE peut comprendre et exécuter le code Kotlin, mais vous devez toujours configurer Kotlin chaque fois que vous souhaitez l’utiliser dans un nouveau projet. Créons un nouveau projet et configurons-le pour utiliser Kotlin maintenant. Créez un nouveau projet avec les paramètres de votre choix, mais dans un souci de simplicité, sélectionnez Activité vide à l'invite.

Grâce au plugin Kotlin, la configuration d’un projet pour utiliser Kotlin ne pourrait être plus simple: il suffit de sélectionner Outils depuis la barre d’outils Android Studio, suivi de Kotlin et Configurer Kotlin dans le projet.

Cela ouvre une nouvelle fenêtre dans laquelle vous pouvez choisir de configurer Kotlin pour:

  • tous les modules
  • tous les modules contenant des fichiers Kotlin
  • ou un seul module nommé

Depuis que je suis seulement utiliser le code Kotlin dans mon projet, j’ai opté pour Tous les modules. Vous pouvez également choisir la version de Kotlin que vous souhaitez utiliser. Ce sera la dernière version..  

Vous pouvez également configurer Kotlin en sélectionnant Aidez-moi dans la barre de menus de Android Studio, suivi de Trouvez l'action… dans le Trouver une action bar, commence à taper Configurer Kotlin dans le projet, puis sélectionnez cette option quand il apparaît.

le Configurer Kotlin dans le projet L’option permet d’apporter de nombreux ajustements à votre projet. build.gradle fichiers, regardons de plus près comment ces fichiers ont changé. Ouvrez votre projet build.gradle file-it devrait ressembler à ceci:

buildscript // Déclare la version de Kotlin que vous utilisez. Vous remarquerez que la version de Kotlin est mentionnée à la fois dans le chemin de classe buildscript et dans les dépendances de compilation de votre projet. Le numéro de version doit être identique aux deux endroits. // ext.kotlin_version = '1.0.5-2' repositories jcenter ( ) dependencies classpath 'com.android.tools.build:gradle:2.2.2' // Déclare le plug-in Kotlin Gradle en tant que dépendance du classpath // classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version"  allprojects repositories jcenter () 

Maintenant, regardons votre niveau de module build.gradle fichier:

apply plugin: 'com.android.application' // Applique le plugin Android de Kotlin // applique le plugin: 'kotlin-android' android compileSdkVersion 25 buildToolsVersion "24.0.0" defaultConfig applicationId "com.jessicathornsby.kotlinexample" minSdkVersion 21 25 versionCode 1 versionName "1.0" buildTypes release minifyEnabled false proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.pro' // Bien que Gradle compile tous les fichiers Kotlin trouvés dans src / main / java, il est recommandé de stocker vos fichiers Kotlin dans un répertoire Kotlin dédié. Ici, vous pouvez voir que le plugin Kotlin a ajouté une déclaration src / main / kotlin à build.gradle, mais notez qu'il n'a pas réellement créé ce répertoire, nous le créerons donc plus tard dans cet article // sourceSets  main.java.srcDirs + = 'src / main / kotlin' dépendances compile fileTree (dir: 'libs', notamment: ['* .jar']) androidTestCompile ('com.android.support.test.espresso: espresso-core: 2.2.2 ', groupe d'exclusion:' com.android.support ', module:' support-annotations ') compiler' com.android.support:appcompat-v7:25.0.1 'testCompile' junit: junit: 4.12 '// Ajoute la bibliothèque standard Kotlin en tant que dépendance de projet // compile "org.jetbrains.kotlin: kotlin-stdlib: $ kotlin_version" repositories mavenCentral ()

Enfin, synchronisez vos modifications en cliquant sur Synchroniser maintenant dans la fenêtre qui apparaît ou en cliquant sur le bouton Synchroniser le projet avec des fichiers Gradle icône dans la barre d'outils d'Android Studio.

Convertir n'importe quel fichier Java en Kotlin

Une fonctionnalité du plugin Kotlin qui est particulièrement utile pour les nouveaux arrivants Kotlin est sa capacité à convertir n'importe quel fichier source Java en Kotlin, tout en maintenant une compatibilité d'exécution complète..

Être capable de voir exactement comment tout Le fichier Java traduit en Kotlin est idéal pour vous aider à apprendre la langue, mais il peut également s'avérer utile tout au long de votre parcours dans Kotlin. Si vous avez du mal à comprendre comment écrire quelque chose en Kotlin, vous pouvez toujours l'écrire en Java. puis utilisez cette fonctionnalité pour convertir ce code en Kotlin.

Convertissons nos projets Activité principale fichier dans un fichier source Kotlin. Il y a deux façons d'invoquer le plugin Kotlin Convertir un fichier Java en fichier Kotlin action, donc soit:

  • Sélectionnez votre Activité principale fichier, puis sélectionnez Code depuis la barre de menus d’Android Studio, suivi de Convertir un fichier Java en fichier Kotlin.

  • Ou sélectionnez Aidez-moi dans la barre de menus de Android Studio, suivi de Trouver une action. Dans la fenêtre contextuelle suivante, commencez à taper Convertir un fichier Java en fichier Kotlin puis sélectionnez cette option quand elle apparaît. Notez que vous pouvez également lancer le Trouver une action popup avec un raccourci clavier: si vous êtes sur un Mac, appuyez sur le bouton Commande-Maj-A Si vous utilisez Windows ou Linux, appuyez sur Control-Shift-A.

Sachez simplement que, selon la complexité de votre code, la conversion peut ne pas toujours être précise à 100%. Vous devez donc toujours vérifier si le code converti contient des erreurs..

Votre nouvellement converti Activité principale devrait ressembler à ceci:

import android.support.v7.app.AppCompatActivity import android.os.Bundle classe MainActivity: AppCompatActivity () substitue l'amusement onCreate (savedInstanceState: Bundle?) super.onCrée (saveInstanceState) setContentView (R.layout.activity_main)

Vous remarquerez également que l’extension du fichier a changé, passant de MainActivity.java à MainActivity.kt.

Cela peut être simple Activité, mais ces quelques lignes illustrent certaines caractéristiques clés de la syntaxe de Kotlin. Comme il s’agit de notre premier aperçu d’un code Kotlin, choisissons cette classe séparément, ligne par ligne..

Comprendre la syntaxe de Kotlin

En Kotlin, vous déclarez des classes en utilisant le mot-clé classe, exactement comme en Java. Cependant, dans Kotlin, les classes (et les méthodes) sont publiques et finales par défaut. Vous pouvez donc créer une classe simplement en écrivant classe MainActivity.

Quand il s'agit d'étendre une classe, vous remplacez Java s'étend avec deux points, puis attachez le nom de la classe parente. Donc, dans la première ligne de notre MainActivity.kt fichier, nous créons une dernière classe publique appelée Activité principale qui s'étend AppCompatActivity:

class MainActivity: AppCompatActivity () 

L'équivalent Java serait:

Classe publique MainActivity étend AppCompatActivity 

Si vous souhaitez redéfinir une classe ou une méthode, vous devez explicitement la déclarer ouverte ou abstraite..

En Kotlin, les fonctions sont définies à l'aide du amusement mot-clé, suivi du nom de la fonction et des paramètres entre parenthèses. En Kotlin, le nom de la fonction précède son type:

remplacez fun onCreate (savedInstanceState: Bundle?) 

C'est l'inverse de Java, où le type vient avant le nom:

public void onCreate (Bundle savedInstanceState)

Notez que nous ne spécifions pas que cette méthode est finale, car dans Kotlin, toutes les méthodes sont finales par défaut..

Le reste de cette activité ressemble assez à Java. Cependant, ces quelques lignes illustrent une autre caractéristique clé de Kotlin:

super.onCreate (savedInstanceState) setContentView (R.layout.activity_main)

À Kotlin, vous ne le faites pas avoir besoin pour terminer vos lignes avec des points-virgules, d’où l’absence de deux points dans l’extrait ci-dessus. Vous pouvez ajouter des deux-points si vous le souhaitez vraiment, mais votre code sera plus propre et plus facile à lire sans eux..

Maintenant que nous avons déchiffré notre MainActivity.kt fichier, déplaçons-le à sa propre maison. Depuis que le plugin Kotlin s'est donné la peine d'ajouter un src / main / kotlin déclaration à notre build.gradle fichier, créons réellement ce répertoire. Cette étape n'est pas obligatoire, mais conserver vos fichiers Kotlin dans un répertoire dédié rendra votre projet beaucoup plus propre..

Dans les studios Android Explorateur de projet, Ctrl-clic votre projet Principale répertoire et sélectionnez Nouveau dans le menu qui apparaît, suivi de Annuaire. Nommez ce répertoire Kotlin puis cliquez sur D'accord.

Si vous avez du mal à repérer vos projets principale répertoire, puis ouvrez le petit menu déroulant situé dans le coin supérieur gauche de la fenêtre. Explorateur de projet et sélectionnez Projet. Vous devriez maintenant avoir aucun problème à repérer cette insaisissable src / main annuaire.

Une fois que vous avez créé un dédié Kotlin répertoire, faites glisser votre MainActivity.kt déposer dedans. Veillez simplement à conserver votre MainActivity.kt nom du package existant du fichier afin que votre projet soit toujours exécuté.

En outre, si vous n'utilisez que Kotlin dans ce projet, vous pouvez supprimer le Java répertoire, plutôt que d'encombrer votre projet avec des répertoires vides et inutiles.

Étant donné que Kotlin est compilé en bytecode, une application écrite en Kotlin a exactement le même sens qu'une application écrite en Java. Essayez donc d'installer cette application sur votre appareil Android ou sur un AVD compatible. Vous devriez avoir l'impression que rien n'a changé..

Création de fichiers Kotlin supplémentaires

Si vous continuez à utiliser Kotlin dans votre projet, vous devrez tôt ou tard créer de nouveaux fichiers Kotlin plutôt que de convertir simplement les fichiers Java existants..

Pour créer un fichier Kotlin, Ctrl-clic votre app / src / main / kotlin répertoire et sélectionnez Nouveau> Activité Kotlin.

Donnez un nom à votre classe et sélectionnez classe dans le menu déroulant. Votre nouvelle classe devrait ressembler à ceci:

classe SecondActivity 

À ce stade, votre activité est vide. Pour arriver au point où vous pouvez commencer à ajouter des fonctionnalités réelles, vous devez suivre quelques étapes. Tout d'abord, ajoutez le importation les déclarations que vous voulez utiliser. La seule différence entre les instructions d'importation dans Kotlin et les instructions d'importation dans Java est qu'il n'est pas nécessaire de terminer chaque ligne avec un point-virgule. Par exemple:

import android.app.Activity import android.os.Bundle import android.app.Activity

Vous devrez ensuite spécifier la classe que vous étendez, en utilisant le même format que celui présenté dans notre MainActivity.kt fichier:

Classe SecondActivity: Activity () 

Ensuite, vous devez remplacer l'activité de onCreate méthode:

Remplacez fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState)

Vous pouvez maintenant ajouter les fonctionnalités de votre choix à cette activité (et dans la section suivante, je vais vous montrer comment utiliser les extensions Kotlin pour manipuler les widgets d'interface utilisateur, ce qui peut être un bon point de départ), mais une dernière étape de configuration vous devez remplir est de déclarer votre activité Kotlin dans votre Manifeste. Ceci suit exactement la même formule que pour déclarer une nouvelle activité Java, par exemple:

   

Extensions Android Kotlin: adieu à la fin findViewById

Maintenant que nous avons maîtrisé les bases, examinons de plus près ce qu'est Kotlin. vraiment capable de démarrer avec une fonctionnalité qui peut vraiment réduire la quantité de code passe-partout dont vous avez besoin pour écrire.

Sous Android, chaque fois que vous souhaitez travailler avec Vue dans une activité, vous devez utiliser le findViewById méthode pour obtenir une référence à cette vue. Cela fait findViewById un des éléments de code les plus importants, mais aussi les plus frustrants, que vous vous retrouvez à écrire encore et encore, et plus de à nouveau dans vos projets Android. le findViewById méthode est une énorme source de bugs potentiels, et si vous travaillez avec plusieurs éléments de l'interface utilisateur dans la même activité, tous ceux findViewByIds peut vraiment encombrer votre code, le rendant difficile à lire.

Il existe un certain nombre de bibliothèques, telles que Butter Knife, qui visent à éliminer le besoin de findViewByIds, ces bibliothèques exigent toujours que vous annotiez les champs de chaque vue, ce qui peut entraîner des erreurs et donne encore l’impression de faire beaucoup d’efforts qui mériteraient d’être investis dans d’autres domaines de votre projet.  

Le plugin Kotlin Android Extensions (qui a été récemment intégré au plugin Kotlin standard) promet de faire findViewById une chose du passé, vous offrant les avantages des bibliothèques mentionnées ci-dessus sans l'inconvénient d'avoir à écrire du code supplémentaire ou à envoyer une exécution supplémentaire.

Vous pouvez utiliser les extensions Kotlin pour importer Vue références dans vos fichiers source. À ce stade, le plug-in Kotlin créera un ensemble de «propriétés synthétiques» qui vous permettront de travailler avec ces vues comme si elles faisaient partie de votre activité. En d'autres termes, vous ne devez plus utiliser findViewById pour localiser chaque Vue avant de pouvoir travailler avec.

Pour utiliser des extensions, vous devez activer le plug-in Kotlin Android Extensions dans chaque module. Ouvrez donc votre module au niveau du module. build.gradle déposer et ajouter ce qui suit:

appliquer le plugin: 'kotlin-android-extensions'

Synchronisez ces modifications en cliquant sur le bouton Synchroniser maintenant apparaitre. 

Vous pouvez ensuite importer les références dans un seul fichier. Vue, en utilisant le format suivant:

importer kotlinx.android.synthetic.main..

Par exemple, si votre acitivity_main.xml fichier contenant un Affichage avec l'identifiant textView1, alors vous importeriez la référence à cette vue en ajoutant ce qui suit à votre Activité:

importer kotlinx.android.synthetic.main.activity_main.textView1

Vous pourrez alors accéder à textView1 au sein de cette activité en utilisant son identifiant seul et sans findViewById en vue!

Regardons les extensions en action, en ajoutant un Affichage à notre activity_main.xml fichier, l'important dans notre MainActivity.kt fichier, et en utilisant des extensions pour définir la AffichageLe texte du programme.  

Commencez par créer votre Affichage:

   

Vous pouvez ensuite importer le Affichage Dans votre MainActivity.kt, et définir son texte en utilisant uniquement son identifiant:

import android.support.v7.app.AppCompatActivity import android.os.Bundle importez kotlinx.android.synthetic.main.activity_main.myTextView, classe MainActivity: AppCompatActivity () ) setContentView (R.layout.activity_main) myTextView.setText ("Hello World")

Notez que si vous souhaitez utiliser plusieurs widgets du même fichier de mise en page, vous pouvez importer l'intégralité du contenu d'un fichier de mise en page en un seul passage, en utilisant la formule suivante:

importer kotlinx.android.synthetic.main..*

Par exemple, si vous souhaitez importer tous les widgets de votre activity_main.xml fichier, vous ajouteriez ensuite ce qui suit à votre activité:

kotlinx.android.synthetic.main.activity_main. *. 

Conclusion

Dans cette deuxième partie, nous avons décrit la configuration de votre environnement de développement pour la prise en charge de Kotlin et avons expliqué à quel point il est facile de convertir votre code Java existant en Kotlin. Nous avons également examiné certaines des principales caractéristiques de la syntaxe Kotlin et avons introduit les extensions Android Kotlin dans notre projet.. 

Dans le troisième et dernier volet, nous examinerons quelques fonctionnalités plus avancées du langage Kotlin qui, en tant que développeur Android, devraient vous sembler particulièrement utiles..

  • Comprendre la concurrence sur Android avec HaMeR

    Dans ce didacticiel, nous allons explorer le cadre HaMeR (gestionnaire, message et exécutable), l'un des modèles de concurrence les plus puissants disponibles sur Android. Tu vas…
    Tin Megali
    SDK Android
  • Commencer avec Firebase pour Android

    La création d'un serveur principal nécessite des compétences qui font défaut à la plupart des développeurs d'applications indépendants. Heureusement, il existe Firebase, une plateforme basée sur le cloud qui…
    Ashraff Hathibelagal
    SDK Android
  • Android From Scratch: Capteurs matériels

    L'une des choses qui différencient le développement d'appareils mobiles des autres plates-formes est qu'un téléphone mobile ou une tablette est rempli de capteurs et…
    Paul Trebilcox-Ruiz
    SDK Android
  • Commencer avec un modèle d'application Android en 60 secondes

    CodeCanyon propose des centaines de modèles d'applications Android que vous pouvez utiliser pour lancer votre développement. Cette vidéo vous montrera comment installer et personnaliser…
    Ashraff Hathibelagal
    SDK Android
  • Prenez des photos avec votre application Android

    Le Google Play Store propose des dizaines d'applications pour appareils photo, chacune permettant une manière différente de prendre des photos ou de faire quelque chose d'unique avec les photos du…
    Ashraff Hathibelagal
    SDK Android
  • Concurrence pratique sur Android avec HaMeR

    Dans ce didacticiel, nous allons explorer le cadre HaMeR (gestionnaire, message et exécutable), l'un des modèles de concurrence les plus puissants disponibles sur Android. Avec un…
    Tin Megali
    SDK Android