Android kotlin- présentation de l’Hotel

Langage de 2011 crée par Jet Brains, nécessite une JVM.

On utilisera Kotlin qui est plus concis, compatible avec les bibliothèques Java. Il est également possible de mixer des fichiers Java et Kotlin dans un projet.

 

fr badge web generic

 

Partie 1 – installation

Livrable : oless/mission1/…

Émulateur

  • dans Tools, AVD Manager, réaliser un émulateur.
    • vérifier que la virtualisation de votre processeur est activée.
    • télécharger une image système x86.
    • lancer l’émulateur
  • exécuter l’application pour voir le Hello World sur le simulateur.
  • observer le nom de la vue charger dans app/java/MainActivity
  • modifier le texte affiché par votre hôtel dans app/res/layout/activity_main.xml et relancer l’application

Annotation 2020 08 17 142400

 

Téléphone

  • aller sur le numéro de build de votre téléphone et appuyer 7 fois
  • dans options développeur, activer le débogage USB
  • lancer l’application sur le téléphone
  • supprimer l’application de votre téléphone

 

Partie 2 – activity – description de l’Hotel

Livrable : oless/mission1/…

 

activity2

  • On prendra le même nom, logo et charte graphique que le projet Otelo
  • modifier activity_main.xml pour ajouter un bouton
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Main Activity"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Description de l'Hotel"/>
</LinearLayout>
  • ajouter un id au bouton
android:id="@+id/activity_hotel_description"
  • ajouter la récupération de l’événement dans Main_activity.kt, dans la fonction onCreate. On observera le message dans la console lors du click
activity_hotel_description.setOnClickListener{
            println("youhou")
        }
  • ajouter une empty activity  HotelDescriptionActivity, layout activity_hotel_description

activity

  • modifier le code de activity_hotel_description.xml
  • ajuster la couleur selon votre charte graphique
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HotelDescriptionActivity"
    android:background="#A64CA6"
    android:gravity="center">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="activity 2"/>
</LinearLayout>
  • modifier main_activity
activity_hotel_description.setOnClickListener{
            println("youhou")
            val intent = Intent(this, HotelDescriptionActivity::class.java)
            startActivity(intent)
 }
  • tester
  • ajouter un textView à activity_hotel_description
  • ajouter une description à votre hôtel sur hotel_description_activity. On s’occupera de la mise en forme plus tard. On pourra utiliser Lorem Ipsum.

 

Partie 3 – intents – passer des paramètres

On va passer des paramètres à notre seconde activity

  • dans MainActivity, ajouter
activity_hotel_description.setOnClickListener{

            val intent = Intent(this, HotelDescriptionActivity::class.java)
            intent.action=Intent.ACTION_VIEW
            intent.addCategory("Hotel")
            intent.putExtra("nom","Otelo")
            startActivity(intent)
        }
  • ajuster le nom avec celui de votre hôtel
  • dans HotelDescriptionActivity
setContentView(R.layout.description_hotel_activity)

        val action = intent.action  //on ne s en sert pas ici
        val isHotel = intent.hasCategory("Hotel") //on ne s en sert pas ici
        val name = intent.getStringExtra("nom")
        activity_hotel_description_textview.setText(name)
  • ajouter un id activity_hotel_description_textview au textView de hotel_description_activity et importer le layout dans HotelDescriptionActivity
  • tester

 

Informations pour plus tard

 

  • cliquer sur structure en bas à gauche pour faire apparaître la structure des fichiers de code
  • ctrl maj a pour connaitre les raccourcis d’Android Studio
  • nouvelle syntaxe pour récupérer les objets des layouts
val helloWorldTextView : TextView = findViewById(R.id.helloWorldText) as TextView
//devient
helloWorldText.text="Hello World"
  • privilégier les logs au prinln. Les logs sont du moins important au plus grave.
Log.v(TAG, "Verbose")
Log.d(TAG, "Debug")
Log.i(TAG, "Info")
Log.w(TAG, "Warning")
Log.e(TAG, "Error")
Log.println(Log.ASSERT, TAG,"assert")