Prima app Hello World

La prima app android che andremo ad analizzare è Hello World, ci servirà per capire la struttura base di qualsiasi app. Questa è la struttura della nostra app.

Nella cartella manifest troviamo il file AndroidManifest.xml raccoglie le informazioni basilari sull’app utilizzate in fase di installazione. In questo file troviamo le due activity utilizzate con l’indicazione dell’activity principale (nel nostro caso è SplashHelloWorld).

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android” package=”info.ribosoft.helloworld”>
<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme”><activity android:name=”.MainActivity”/>

<activity
android:name=”.SplashHelloWorldActivity”
android:label=”@string/app_name”
android:theme=”@style/FullScreen”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
</application></manifest>

La cartella drawable contiene le immagini utilizzate dall’app, notiamo che esistono 7 versioni dello stesso file “hello_world” sara’ il dispositivo a scegliere quella adatta alla propria risoluzione.

La cartella values contiene delle costanti utilizzate, vengono divise in: colors, dimens, strings e styles.

Notiamo che styles ha un file generico ed uno se la lingua impostata nel dispositivo è l’italiano

colors.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<color name=”colorPrimary”>#008577</color>
<color name=”colorPrimaryDark”>#00574B</color>
<color name=”colorAccent”>#D81B60</color>
</resources>

dimens.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<dimen name=”activity_vertical_margin”>16dp</dimen>
<dimen name=”activity_horizontal_margin”>16dp</dimen>
<dimen name=”splash_size”>250dp</dimen>
</resources>

strings.xml – standard

<resources>
<string name=”app_name”>HelloWorld</string>
<string name=”act_main”>Main Activity</string>
</resources>

strings.xml – italiano

<resources>
<string name=”app_name”>Ciao Mondo</string>
<string name=”act_main”>Attività Principale</string>
</resources>

styles.xml

<resources>
<style name=”AppTheme” parent=”Theme.AppCompat.Light.DarkActionBar”/>
<style name=”FullScreen” parent=”Theme.AppCompat.Light.NoActionBar”>
<item name=”android:windowFullscreen”>true</item>
<item name=”android:windowNoTitle”>true</item>
</style>
</resources>

La cartella layout contiene i file che definiscono la struttura delle interfacce utente, nella nostra app abbiamo creato due layout:
una layout che si apre appena viene lanciata l’app e dopo un pò passa al layout principale dell’app.

activity_splashhelloworld.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<FrameLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.MainActivity”>

<ImageView
android:id=”@+id/splash_imageview”
android:layout_width=”@dimen/splash_size”
android:layout_height=”@dimen/splash_size”
android:layout_gravity=”center”
android:src=”@drawable/hello_world”/>
</FrameLayout>

 

activity_main.xml

<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.MainActivity”>

<TextView
android:id=”@+id/txtHelloWorld”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:fontFamily=”sans-serif”
android:text=”@string/app_name”
android:textAlignment=”center”
android:textSize=”50dp” />

<TextView
android:id=”@+id/txtMainActivity”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:fontFamily=”sans-serif”
android:text=”@string/act_main”
android:textAlignment=”center”
android:textSize=”30dp”/>
</LinearLayout>

Il codice della nostra app lo troviamo nella cartella java

SplashHelloWorldActivity.java

definiamo la classe un’estensione della classe Activity
public class SplashHelloWorldActivity extends Activity{

onCreate viene invocata quando l’activity viene create, serve per la fase di inizializzare.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashhelloworld);
View decorView = getWindow().getDecorView();

disabilitiamo i tasti di navigazione
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(uiOptions);
mHandler = new UiHandler(this);

abilitiamo all’ascolto di eventi
final ImageView logoImageView = (ImageView) findViewById(R.id.splash_imageview);
logoImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
long elapsedTime = SystemClock.uptimeMillis() – mStartTime;
if (elapsedTime >= MIN_WAIT_INTERVAL && !mIsDone) {
mIsDone = true;
goAhead();
}
return false;
}
});
}

dopo un po’ o quando l’utente clicca sul touch avvia l’attività principale

private void goAhead() {
final Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}

MainActivity.java

package info.ribosoft.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

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

Verifichiamo su un dispositivo virtuale il funzionamento del programma

Please follow and like us:

Lascia un commento