Sviluppare un’app android

Il primo passo per iniziare a sviluppare un’app android consiste nel dotarsi degli strumenti adeguati, qui possiamo scaricare un ambiente di lavoro intuitivo e multipiattaforma. Android Studio prevede la simulazione della nostra app su diversi dispositivi (cellulari, tablet, indossabili e smart TV).

Nella progettazione di un’app la cosa importantissima è l’aspetto grafico, questa struttura prende il nome di layout. Dobbiamo considerare che la nostra app potrebbe girare in diversi dispositivi con diverse dimensioni, quindi il layout deve adattarsi alle diverse dimensioni senza stravolgere l’aspetto grafico.

In questo esempio il layout si adatta alla rotazione del dispositivo

Per un corretto layout adattabile alle diverse dimensioni dei dispositivi mantenendo comunque l’aspetto grafico iniziale bisogna dividere la grafica in quattro righe

<androidx.constraintlayout.widget.ConstraintLayout
   android:id="@+id/lytRiga3"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   app:layout_constraintBottom_toTopOf="@+id/lytRiga2"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toTopOf="parent">
   .....
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
   android:id="@+id/lytRiga2"
   android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintBottom_toTopOf="@+id/lytRiga1"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toBottomOf="@+id/lytRiga3">
   .....
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
   android:id="@+id/lytRiga1"
   android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintBottom_toTopOf="@+id/lytRiga0"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toBottomOf="@+id/lytRiga2">
   .....
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
   android:id="@+id/lytRiga0"
   android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   app:layout_constraintTop_toBottomOf="@+id/lytRiga1">
   .....
</androidx.constraintlayout.widget.ConstraintLayout>

Ogni riga viene poi divisa in due blocchi, un esempio dell’ultima riga, questo è il blocco a sinistra:

<androidx.constraintlayout.widget.ConstraintLayout
   android:id="@+id/lytRiga0A"
   android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toLeftOf="@+id/lytRiga0B"
   app:layout_constraintTop_toTopOf="parent">
   <androidx.constraintlayout.widget.ConstraintLayout
      android:id="@+id/lytRiga0A0"
      android:layout_width="0dp"
      android:layout_height="0dp"
      app:layout_constraintBottom_toTopOf="@+id/lytRiga0A1"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent">
      <Button
         android:id="@+id/btnUno"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:text="@string/tasto_uno"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toLeftOf="@+id/btnDue"
         app:layout_constraintTop_toTopOf="parent" />
      <Button
         android:id="@+id/btnDue"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:text="@string/tasto_due"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toRightOf="@+id/btnUno"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
      </androidx.constraintlayout.widget.ConstraintLayout>
      <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/lytRiga0A1"
         android:layout_width="0dp"
         android:layout_height="0dp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/lytRiga0A0">
      <Button
         android:id="@+id/btnZero"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:text="@string/tasto_zero"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
      </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Superata la progettazione del layout bisogna far si che i pulsanti e i vari oggetti rimangono in ascolto listener a tutte le interazioni dell’utente sullo schermo del dispositivo.

Per abilitare l’interazione dispositivo-utente per l’activity basta inserire questa riga:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

Successivamente bisogna abilitare l’oggetto ad un tipo di ascolto, nel nostro caso al click:

.setOnClickListener(this);

Quindi bisogna scrivere il codice, bisogna dire cosa ogni tasto deve fare e come si deve interfacciare con gli altri tasti. Cosa importantissima nella programmazione sono i commenti, un ottimo programma ha più commenti che codice.

Successivamente si passa alla fase di testing per cercare di trovare bug e correggerli, sarebbe utile far testare il programma a più persone diverse da chi ha scritto il codice.

Prima della pubblicazione bisogna creare l’icona che verrà visualizzata nei dispositivi, nella cartella res troviamo le sottocartelle contenenti le icone per le varie dimensioni:

Altrimenti verranno visualizzate le icone standard:

Per finire si crea un package con estensione apk che conterrà:

  • .dex – file destinati all’ambiente di runtime in android;
  • .arsc – risorse destinate al progetto;
  • .xml – il file AndroidManifest.xml trasposto in un formato binario;
Print Friendly, PDF & Email
Please follow and like us:

Lascia un commento