Verified Commit 55dbe55b authored by Lorenzo Prosseda's avatar Lorenzo Prosseda
Browse files

Finished English translation

parent 8675ee3a
Pipeline #654 passed with stage
in 1 minute and 8 seconds
......@@ -86,14 +86,13 @@ There are alternatives but we won't talk about them
## Android Fundamentals
- Java su Android ≠ Java su computer
- Il linguaggio è lo stesso, l'utilizzo è molto diverso
- Java on Android ≠ Java on your PC
- The same language, but used with different assumptions
----
### "Hello world" (per computer)
Java
```java
......@@ -116,37 +115,37 @@ fun main() {
## Entry points
- In entrambi i casi abbiamo una funzione **`main`**
- Quando il codice verrà eseguito, il programma inizia da lì
- In both cases we write a **`main`** function
- The program execution will begin by running the code inside it
----
## Entry points
In ogni caso, **generalmente** abbiamo un solo entry point
Anyways, there is **in general** a single entry point
----
## Entry points
Su Android, **`main` non esiste**.
On Android, the **`main`** function **does not exist**.
---
# Android Fundamentals
## I componenti base
## Building blocks
----
## I componenti base
## Building blocks
Su Android, tutto si basa su 4 componenti base.
On Android, all software is built upon four main components
*(Si estendono 4 classi base)*
*(You will extend the code from four base classes)*
----
## I componenti base
## Building blocks
- Activity
- Service
......@@ -155,49 +154,49 @@ Su Android, tutto si basa su 4 componenti base.
----
## I componenti base
## Building blocks
### Activity
Mostra e controlla una schermata di un'applicazione
Show and control an application's screen
----
## I componenti base
## Building blocks
### Service
Un servizio che esegue delle operazioni *in background*, senza un'interfaccia grafica
Run operatios *in background*, without a graphical front end
----
## Activity e Service
## Activity and Service
- Activity e Service estendono entrambi **Context**.
- I Context forniscono informazioni sull'app e sull'ambiente
- La maggior parte delle API richiede un Context di riferimento
- Activity and Service both extend **Context**
- Context gives information on the app runtime and the execution environment
- The majority of APIs require a defined Context
----
## I componenti base
## Building blocks
### BroadcastReceiver
Una qualsiasi classe che riceve degli eventi ("Broadcast") inviati da altre app o dal sistema.
Any class that can receive events, called *broadcast*, which are sent by other apps or by the OS
----
## I componenti base
## Building blocks
### ContentProvider
Un componente che fornisce dei contenuti ad altri che ne usufruscono.
A component which exposes some content on the device to other "consumers".
*(non lo tratteremo nel dettaglio)*
*(we will not cover it in detail)*
----
Tutti questi componenti vengono controllati mediante gli
Interactions among these pieces are realized by
## Intent
......@@ -205,14 +204,14 @@ Tutti questi componenti vengono controllati mediante gli
## Intent
- Ci consentono di comunicare con il sistema
- Descrivono un'azione che intendiamo compiere
- Allow communication with the OS
- They describe an action to be performed
----
## Intent - mini demo
Eseguite sul terminale:
Run from terminal (if the `adb` program is installed)
```sh
adb shell \
......@@ -225,15 +224,15 @@ adb shell \
## Intent - mini demo
Abbiamo inviato al sistema un Intent che:
We sent to the OS an intent, which:
- Avvia un'**attività**
- L'attività deve **visualizzare** qualcosa
- Quel "qualcosa" si trova nella location "https:\//poul.org"
- started an **activity**
- the activity will **show** something
- that something is located at "https:\//poul.org"
----
## Intent - altro esempio
## Intent - another example
```sh
adb shell \
......@@ -247,129 +246,129 @@ adb shell \
## Intent - altro esempio
Con questo Intent vogliamo:
With this intent we want to:
- Avviare un'attività
- L'attività deve **inviare** (condividere) qualcosa
- Quel qualcosa è del testo
- Il testo nello specifico è "https:\//poul.org"
- start an activity
- the activity will **send** (share) something
- that something is some text
- that text is the string "https:\//poul.org"
---
# Fermiamoci un attimo
# Hold on a second...
Rivediamo tutto da un altro punto di vista
Let's recap from another point of view
----
Abbiamo visto che:
We showed that:
- Ci sono diversi modi di entrare in un'app
- Non c'è un punto specifico di inizio del programma
- There are thifferent ways to launch an app
- There isn't a specific starting point for the app's code
----
Un'app non si avvia soltanto quando tocchiamo l'icona nella lista
An app is not started just by tapping its icon from the launcher
----
Notiamo inoltre che:
We should also remark that:
- Non abbiamo dovuto specificare quale app o attività utilizzare
- L'app (o la lista di app) è stata selezionata in base a:
- Azione
- Tipo di dato associato
- We did not target a specific app or activity to use
- The app (one or more) was targeted by the OS, based upon:
- Action
- related data type
----
- Questo è uno dei punti di forza di Android
- App non correlate possono collaborare tra di loro per fornire funzionalità integrate
- This is one great feature of the Android platform
- Non-correlated apps can cooperate to provide integrated features
----
La mia app non ha bisogno di includere (ad es.) un lettore di PDF per mostrare un documento all'utente.
For example, to show a PDF document to the user, an app may not include a PDF viewer.
Ma può farlo, e eventualmente mettersi a disposizione di altre app.
However it can do that, and also expose its capability to other apps, that could therefore request to open a PDF through it.
---
# Intro a Kotlin
# Intro to Kotlin
Molto rapida, per chi conosce Java
Quick overvew, for Java "speakers"
----
## Kotlin
- Linguaggio ufficiale di Android
- A oggetti
- Si può compilare in:
- Binari Java
- Binari nativi
- Official Android programming language
- Object Orinted
- Can be copiled in
- Java binaries
- native binaries
- JavaScript
----
## Kotlin
In breve:
In short, about its syntax
- Rimuove tutte le cose brutte di Java:
- È conciso
- È null-safe
- Niente più getRobe/setRobe
- Rimuove alcune feature che causano problemi
- It ditches all bad stuff from Java
- concise
- null-safe
- avoids getter/setter methods
- removes some troublesome features
----
## Kotlin
- Ha tante cose belle di altri linguaggi:
- Type inference
- Argomenti opzionali
- Coroutine
- Tanto altro
- It inherits good stuff from other languages
- type inference
- optional arguments
- coroutine
- many more
----
## Kotlin
Da sapere:
Remember:
- Non esistono le classi statiche (si usano gli `object`)
- Non esistono i metodi statici (si usa il `companion object`)
- Bisogna dire esplicitamente se una variabile può essere `null`
- Non si mette `throws` per dichiarare le eccezioni
- static classes do not exist (use `object` instead)
- static methods do not exist (use `companion object` instead)
- it's mandatory to allow `null` as an allowed value for any declared variable
- exceptions are not created using `throws` keyword
----
## Kotlin
Con Android Studio/IntelliJ, non è veramente necessario conoscerlo per scriverlo.
With Android Studio or IntelliJ you can write it with a pretty basic knowledge
È sufficiente sapere le basi, e poi si può fingere sia Java.
It's sufficient to know the basics, and then you can pretend it's Java
----
## IntelliJ IDEA (o Android Studio)
## IntelliJ IDEA / Android Studio
- Vi aiuterà a sfruttare le feature del linguaggio per rendere il codice conciso
- Consente di convertire codice Java in Kotlin
- It will help you to leverage the syntax features to make the code concise
- Ic can convert Java code to Kotlin!
---
## La teoria per oggi è finita!
## Theory it's over for today
----
## Per chi non aveva scaricato i componenti
## If you haven't downloaded the resources yet
Preparazione iniziale:
Workspace setup
https://pad.poul.org/preparazione-corsi-android
Istruzioni per la creazione del progetto:
Project creation
https://pad.poul.org/corsi-android-creazione-progetto
<section class="intro">
<img src="slides/img/android-logo.svg" />
<h1>Corsi Android 2019</h1>
<h1>Corsi Android 2020</h1>
<img src="./poul/img/logo-text-white.svg" />
<p>Davide Depau &lt;davide@depau.eu&gt;</p>
<p>Lorenzo Proseda &lt;lproseda@poul.org&gt;</p>
</section>
......@@ -7,5 +7,5 @@
<img class="cc" src="./poul/img/creativecommons-by-nc-sa.svg"/>
<p>Davide Depau &lt;davide@depau.eu&gt;</p>
<p>Lorenzo Proseda &lt;lproseda@poul.org&gt;</p>
</section>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment