web design umbria

Mi spiace Dave, purtroppo non posso farlo: la rivolta di Android Studio e di HAL 9000, completamento dell’ APP Kubrick

web design umbria

Invece lo farai caro studio android manager, sono io che comando su questa astronave, risponde l’attore-astronauta al soldo del regista più famoso di sempre! La rivolta delle macchine sognata da Kubrick in uno dei suoi tanti capolavori come 2001 odissea nello spazio, è ancora ben lontana dal sopraggiungere nella nostra era. Su Umbriawayinfo,  abbiamo creato la prima APP ANDROID che però è risultata alquanto artigianale e sgraziata con una dimostrazione di un componente TOAST agganciato a un evento che non ci ha lasciato fare molto, ora si tratta di completarla e di archiviare il task. Questa APP che fa? Cattura una risposta in ingresso con un componente che si chiama EditText e lo spara in uscita su una TextView solo dopo aver verificato in quale area di istruzione condizionale la pallina della scelta è determinata. E’ proprio come una pallina dell’ estrazione del lotto, il regista dei registi, Stanley Kubrick che ha fatto film leggendari che rimarrranno per sempre nell’ immaginario collettivo ha una serie di film etichettati in un costrutto switch che ruotando in maniera dinamica estrapola 4 condizioni di esempio legate ai film shining, full metal jacket, arancia meccanica e 2001 odissea nello spazio. A ognuna di queste scelte corrisponde una frase famosa nella sceneggiatura del film per celebrare il genio a cui l’APP è dedicata. Vediamo che il file AndroidManifest.xml contiene un punto di ingresso che fa partire l’applicazione e vediamo anche che nella activity che compare per l’interazione utente esiste una riga che recita tools:context=”.MainActivity”> e che l’interazione utente al punto di ingresso. Se finissimo camminando da viandanti ansiosi in prossimità di un incrocio e un demone ci bloccasse di fronte a un bivio, con due strade possibili una giusta che porta al paesello e l’altra che affonda in un abisso, con la domanda del demone: se tu dovessi impedire a un progetto android di funzionare e puoi eliminare un solo file cosa elimineresti? La nostra risposta per salvarci deve essere AndroidManifest.xml, perchè essendo un entry level che tra l’altro ha un peso non da poco sulla registrazione dell’ app sul market place dedicato, ha una centralità totale, tanto che i vari layout devono essere agganciati qui per funzionare. Tra l’altro si noti l’uso massivo di espressioni a chiocciola come android:label=”@string/app_name” o android:theme=“@style/AppTheme” che stanno a significare che il sistema attinge alle risorse del file system per far cercare e trovare quello che serve per far funzionare l’app, si veda ad esempio cosa contiene il file strings.xml, dove ci si arriva tramite RES che viene identificato negli script java come classe R puntato, dove presumibilmente incontreremo un nodo di nome app_name che avrà un valore che guarda caso verrà catturato come intestazione della APP (e che quindi possiamo cambiare). Questo agganciare le risorse esterne è molto importante, si pensi ad esempio solo in quei casi in cui la dichiarazione volante di un valore testo senza archiviazione verrebbe revisionato A MANO in caso di internalizzazione in varie altre lingue.

AndroidManifest.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
package=”eu.umbriaway.kubrickcultmovie”>

<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity android:name=”.MainActivity”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>

</manifest>

activity_main.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<android.support.constraint.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
xmlns:app=”http://schemas.android.com/apk/res-auto&#8221;
xmlns:tools=”http://schemas.android.com/tools&#8221;
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.MainActivity”>

<TextView
android:id=”@+id/colorOutput”
android:layout_width=”0dp”
android:layout_height=”wrap_content”
android:layout_marginLeft=”8dp”
android:layout_marginTop=”8dp”
android:layout_marginRight=”8dp”
android:layout_marginBottom=”8dp”
android:textAlignment=”center”
android:textSize=”30sp”
android:textStyle=”bold”
app:layout_constraintBottom_toBottomOf=”parent”
app:layout_constraintLeft_toLeftOf=”parent”
app:layout_constraintRight_toRightOf=”parent”
app:layout_constraintTop_toTopOf=”parent” />

<Button
android:id=”@+id/submitButton”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginEnd=”4dp”
android:layout_marginBottom=”4dp”
android:text=”@string/submitButtonText”
app:layout_constraintBottom_toBottomOf=”parent”
app:layout_constraintEnd_toEndOf=”parent”
android:onClick=”updateColorText”/>

<EditText
android:id=”@+id/colorInput”
android:layout_width=”0dp”
android:layout_height=”wrap_content”
android:layout_marginStart=”4dp”
android:layout_marginEnd=”4dp”
android:layout_marginBottom=”4dp”
android:ems=”10″
android:hint=”@string/colorInputHint”
android:inputType=”textPersonName”
app:layout_constraintBottom_toBottomOf=”parent”
app:layout_constraintEnd_toStartOf=”@+id/submitButton”
app:layout_constraintStart_toStartOf=”parent” />

</android.support.constraint.ConstraintLayout>

Del resto il file activity_main.xml è la lavagna grafica dove sono disposti tutti i nostri elementi e dove verrrano richiamate le librerie tramite l’istruzione import che importeranno le superclassi come View per far funzionare i componenti della nostra APP che alla fine non sono tanti, solo un campo testo, una editText e un bottone. Si noti qui l’importanza di un componente di nome constraint.ConstraintLayout che rispetto al suo primitivo collega LinearLayout che dispone gli elementi solo verticalmente e orizzontalmente con una certa rigidità vincolante, qui introduce una certa elasticità a sostegno. Quando si vedono espressioni tipo @+id/submitButton significa che qualche componente sul codice java corrispondente è stato agganciato con il nome identificativo corrispondente e questo per far funzionare eventi di intercettazione come android:onClick=”nomedellafunzione” per esempio. L’unita di misura dp si usa per la disposizione degli elementi grafici mentre per sottolineare la dimensione del testo si usa l’unità di misura sp. Ma una interfaccia grafica di elementi che è sprovvito di codice java corrispondente risulterebbe vuota e inutile, quindi poi alla fine senza un linguaggio di programmazione che dice cosa fare a questi oggetti non si ottiene nulla. In Android studio e per fare app android in generale possiamo usare diversi linguaggi che derivano dal C (ricordiamoci che Android come sistema operativo arriva direttamente dal KERNEL LINUX) e quindi C#, Java e il più recente semplificato Kotlin vanno bene.

MainActivity.java

package com.tuobrand.kubrickcultmovie;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private EditText mColorInput;
private TextView mColorOutput;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mColorInput = findViewById(R.id.colorInput);
mColorOutput = findViewById(R.id.colorOutput);
}

public void updateColorText(View view) {
String movie = mColorInput.getText().toString().toLowerCase();
String message = “”;

switch (movie) {
case “shining”:
message = “Wendyyyyyyy, il mattino ha l’oro in bocca”;
mColorOutput.setText(message);
mColorOutput.setTextColor(Color.BLUE);
break;
case “arancia meccanica”:
message = “Alex:Birba birba birba! Vecchia sporcacciona!”;
mColorOutput.setText(message);
mColorOutput.setTextColor(Color.GREEN);
break;
case “2001 odissea nello spazio”:
message = “HAL 9000 : Mi spiace Dave. Purtroppo non posso farlo”;
mColorOutput.setText(message);
mColorOutput.setTextColor(Color.RED);
break;
case “full metal jacket”:
message = “Soldato Joker : come diceva John Wayne, un giorno senza sangue è come un giorno senza sole”;
mColorOutput.setText(message);
mColorOutput.setTextColor(Color.BLACK);
break;
default:
message = “You love Kubrick”;
mColorOutput.setText(message);
mColorOutput.setTextColor(Color.rgb(200, 105, 210));
break;
}
}
}

Come dice sempre John Wayne, un giorno senza sangue è come un giorno senza sole! Ma poi dopo le nuvole arriva il sereno, soldato Joker. L’APP di web design umbria è finita e non ci resta che studiare e vedere tutta la filmografia di Stanley Kubrik! Per pubblicare su STORE GOOGLE serve un seminario di sei mesi, ma facendo tasto destro su nome del progetto e scegliendo l’opzione mostra in wxplorer si arriva a capire dopo una simulazione con l’emulatore che è stato generato sotto una cartella BUILD e altre di livello subinferiore. Il file APK così generato si potrebbe inserire su un dominio per poterlo scaricare e installare da telefonino dopo aver digitato URL specifico, ma ovviamente intervengono tutta una serie di restrizioni di sicurezza che impediscono al sistema di installare APP non riconosciute dalla firma. Quindi il passo successivo sarebbe quello di procedurizzare in STORE ma è una procedura che ha caratteristiche complesse da vedere a parte!

Questo slideshow richiede JavaScript.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...