IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

7. diel - Android programovanie - Welcome screen animácie kalkulačky

V minulej lekcii, Android programovanie - Dokončenie implementácia kalkulačky , sme dokončili jednoduchú kalkulačku pre Android v Jave. Nasledujúce bonusová kapitola bude o pridanie aktivity s úvodnú animáciou, ktorá bude reprezentovať moju školu. Touto bonusovú kapitolka trochu predbieham, pretože v aplikácii, ktorú si v ďalších kapitolách vytvoríme, sa budú objavovať animácie a pred tým než sa tak stane, si detailne preberieme možnosti ohľadom animácií. Ak sa teda necítite na túto kapitolku a preskočíte ju, nič sa nedeje.

Vytvorenie XML návrhu

Do zložky layout/ pridáme nový súbor activity_welcome.xml:

Welcome screen - Programovanie Android aplikácií v Jave
<RelativeLayout 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=".Welcome"
    android:background="#ffe1e1e1"
    android:keepScreenOn="true">

    <ImageView
        android:layout_width="141dp"
        android:layout_height="54dp"
        android:id="@+id/imageView"
        android:background="@drawable/b9calc_text"
        android:layout_gravity="center"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <ImageView
        android:layout_width="300dp"
        android:layout_height="130dp"
        android:id="@+id/imageView2"
        android:background="@drawable/msk_logo"
        android:layout_gravity="center"
        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp" />
</RelativeLayout>

Vytvorenie welcome_sc.xml

V priečinku res/ si vytvoríme zložku anim/. V nej potom súbor welcome_sc.xml a vložíme kód (vysvetlenie je vnútri v komentároch):

<?xml version="1.0" encoding="UTF-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">
    <!--
        Transformace je aplikována po tom, co animace skončí.
        To znamená, že logo které animujeme zůstane tam,
        kam dopadne a neposkočí zpátky.
    -->
    <!--
        Nastavení první části animace, tj. zviditelnění loga
        školy z 0 na 100% za použití interpolatoru, což je
        přednastavený modifikátor animace. My jsme použili
        android:anim/accelerate_interpolator, který začne
        pomalu a ke konci se zrychlí.
    -->
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="1250"
        android:repeatCount="0"
    />
    <!--
        android:duration určuje dobu trvání animace v ms
        android:repeatCount udává počet opakování animace
    -->
    <translate
        android:fromYDelta="-30%p"
        android:toYDelta="5%p"
        android:duration="1750"
        android:startOffset="1250"
        android:repeatCount="0"/>
    <!--
        android:toYDelta je pohyb v ose Y
        android:duration je délka animace
        android:startOffset je zpoždění animace
    -->
</set>

Ak by sme chceli animovať viac objektov ImageView (kľudne zároveň), musíme vytvoriť viac týchto súborov.

Vytvorenie Welcome.java

Do zložky, kde máte .java kódy, pridáme súbor Welcome.java (cesta je app/src/main/java/xxx.jmeno.jmeno2.jménoapp/)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);

    getSupportActionBar().hide();

    // Nastavíme a spustíme animaci pro logo školy
    ImageView imgvwSpsoa = findViewById(R.id.imageView2);
    Animation animSpsoaLogo = AnimationUtils.loadAnimation(this, R.anim.welcome_sc);
    /* Animace se „aplikuje“ na imageView, což je ID našeho loga školy.
       Veškeré potřebné nastavení pro samotnou animaci je v souboru welcome_sc
    */
    imgvwSpsoa.startAnimation(animSpsoaLogo); // spuštění samotné animace

    // Vytvoření druhého vlákna s časovačem, po uplynutí limitu je spuštěna další aktivita
    Thread thrdWlcmscrnDelay = new Thread() {
        public void run() {
            try {
                sleep(3500);
                startActivity(new Intent(getApplicationContext(), MainActivity.class));
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                finish();
            }
        }
    };
    thrdWlcmscrnDelay.start();
}

AndroidManifest.xml

Teraz máme všetko nastavené, stačí zariadiť, aby sa ako prvý aktivita spustila Welcome. To docielime tak, že pridáme aktivitu do AndroidManifestu s tým, že sa bude jednať o Main Activity:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.informatika.spsoa.calc">

    <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" android:label="@string/app_name"></activity>
        <activity android:name=".Welcome" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Vďaka nastaveniu v AndroidManifestu sa teraz ako prvý spustí aktivita Welcome. Tá má svoj vzhľad nastavený v activity_welcome.xml.

V kóde pre túto aktivitu Welcome.java je v metóde onCreate() nastavená animácie pre ImageView, čo je logo našej školy a vlákno s časovačom. Samotné nastavenia pre animáciu (to čo má animácie robiť, tj. Zobrazí logo školy a jeho posun po osi Y) je v súbore welcome_sc.xml. Vďaka vláknu s časovačom v metóde onCreate() sa za 3500 ms spustí naše aktivita s kalkulačkou (calcActivity.class).

V budúcej lekcii, Šibenice pre Android - Animácie, Shared preferences a Intent , začneme s tvorbou novej, tentoraz už grafické Android aplikácie :)


 

Predchádzajúci článok
Android programovanie - Dokončenie implementácia kalkulačky
Všetky články v sekcii
Programovanie Android aplikácií v Jave
Preskočiť článok
(neodporúčame)
Šibenice pre Android - Animácie, Shared preferences a Intent
Článok pre vás napísal Jiří Frank
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS
Aktivity