Aplikasi Android Untuk Kimia (3): Reaksi Redoks

kimia_0

Proyek aplikasi android yang saya sajikan ini agak panjang sedikit, karena menggunakan beberapa halaman dan memasukkan beberapa komponen widget, yaitu button gambar, gambar, suara (mp3), video dan halaman html. Navigasi yang dimasukkan adalah langkah maju, langkah mundur, navigasi stop dan play video dan keluar media, disamping itu didalamnya ada perintah untuk memainkan mp3 dan stop mp3.

Untuk memudahkan latihan, silahkan download dulu file Reaksi Redoks dari link download berikut download. Ekstrak dan bukalah menggunakan menu File –> Open.

Langkah penyusunan proyek aplikasi Reaksi Redoks:

1. Sebelum melangkah membuat proyek baru sebaiknya semua komponen disiapkan dulu, misalnya file gambar, file mp3, file html dan file video.

2. Gunakan file manager untuk mengelola semua komponen itu. Sebagai contoh buatlah folder baru bernama drawable dan raw di dalam folder res, lalu masukkan semua komponen gambar ke dalam folder drawable, sedangkan file video (3gp), html dan mp3 dimasukkan ke dalam folder raw. Langkah ini bisa saja dilakukan setelah file proyek Reaksi Redoks dibuat.

 

3. Rancang layout proyek aplikasi Reaksi Redoks, sebagai contoh dalam file di atas adalah sebagai berikut

1) Tampilan pertama adalah Splash, diset 10000 mdetik = 10 detik

2) Tampil halaman Cover Paket, ada navigasi masuk ke Halaman 1

3) Dalam tampilan Halaman 1 ada navigasi ke kiri untuk kembali ke Cover Paket atau ke kanan untuk maju ke Halaman 2

 

4) Dalam tampilan Halaman 2 ada navigasi ke kiri untuk kembali ke Halaman 1 atau ke kanan untuk maju ke Halaman 3 dan seterusnya di mana pada setiap halaman berisi komponen widget yang mungkin berbeda, ada yang yang mengandung teks saja, ada yang berisi html, gambar, mp3 atau video.

 

5) Dalam tampilan halaman terakhir ada navigasi ke kiri untuk kembali ke halaman sebelumnya  atau ke kanan untuk kembali ke Halaman 1 atau keluar.

4. Mulailah membuat file proyek Reaksi Redoks dengan klik menu File –> New Project dari layar IDE.

redoks-1

5. Isi kotak dialog seperti gambar di atas, yaitu

Application name: Reaksi Redoks

Company domain: kasmui.com (silahkan isi bebas nama domain walau fiktif)

Package name: paket.program (untuk mengisi ini klik Edit dan isi dengan nama paket.program, lalu klik Done yang ada di sebelah kanan jika sudah selesai.

Project location: (bebas ditempatkan di folder mana saja), lalu beri nama proyeknya yaitu ReaksiRedoks, lalu klik button Next sehingga muncul tampilan berikut

redoks-2

 

6. Memilih jenis alatnya, misalnya Phone and Tablet dengan Minimum SDK: API 10: Android 2.3.3 (Gingerbread), lalu klik Next sehingga muncul tampilan berikut

redoks-3

 

7. Dari tampilan di atas pilihlah sementara tema Blank Activity, lalu klik Next sehingga muncul tampilan berikut

redoks-4

 

8. Isilah Blank Activity di atas dengan isian berikut:

Activity Name: CoverPaket

Layout Name: cover_paket

Title: CoverPaket

Menu Resource Name: cover_paket

Klik button Finish sehingga muncul tampilan layar IDE seperti berikut

redoks-5

 

9. Halaman CoverPaket (Class Java) yang berada pada paket.program berkaitan dengan layout cover_paket.xml. Isi file cover_paket.xml  adalah sebagai berikut

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/background"
    tools:context=".CoverPaket" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="5dp"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/next_button"
            android:layout_width="100sp"
            android:layout_height="40sp"
            android:drawableRight="@drawable/kanan"
            android:text="@string/next_button"
            android:textSize="14sp" />

    </LinearLayout>

    <TextView
        android:id="@+id/txtHal_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:shadowColor="#ff00ff"
        android:shadowDx="2"
        android:shadowDy="2"
        android:text="@string/txtJudul"
        android:textColor="#070898"
        android:textSize="24sp"
        android:textStyle="italic" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtHal_1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="45dp"
        android:contentDescription="@string/todo"
        android:src="@drawable/korosi" />

</RelativeLayout>

Tampilan visualnya adalah

tampilan_cover_paket

 

Penjelasan:

Halaman CoverPaket ini menggunakan gambar background yang dipanggil menggunakan properties dalam <RelativeLayout … >

android:background="@drawable/background"

Maksudnya adalah file gambar background disimpan dalam foder drawable dengan nama file background.png.

Isi CoverPaket adalah komponen Teks “Reduksi dan Oksidasi”, gambar menggunakan komponen <ImageView … > dan button bergambar dengan properties

android:drawableRight="@drawable/kanan"

drawableRight digunakan untuk menempatkan gambar dalam button sebelah kanan teks, gambarnya disimpan dalam folder drawable dengan nama file kanan.png. Tentunya apabila akan menempatkan gambar dalam button sebelah kiri teks maka menggunakan properties drawableLeft dan gambarnya harus disimpan di folder tertentu seperti drawableRight. Button diletakkan dalam <LinearLayout … > supaya mudah pengaturan posisi kiri dan kanannya bila ada 2 button atau lebih.

 

 10. File cover_paket.xml hanya berisi komponen-komponen saja dan tidak akan bisa berfungsi jika tidak digerakkan oleh file CoverPaket.java. Isi file CoverPaket.java adalah sebagai berikut

package paket.program;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class CoverPaket extends Activity {
    private MediaPlayer player;
    private Button right;
    private Intent intenku;

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

        player = MediaPlayer.create(this, R.raw.doa);
        player.setLooping(true);
        player.start();

        right = (Button) this.findViewById(R.id.next_button);
        right.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View pindah) {
                player.stop();

                intenku = new
                Intent(pindah.getContext(), Halaman_1.class);
                startActivityForResult(intenku, 0);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.cover_paket, menu);
        return true;
    }

}

Penjelasan:

1) Import digunakan untuk mengimport semua komponen dalam layout sehingga dikenali dalam file java ini

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

2) Kemudian semua komponen dalam layout dideklarasikan di file java ini

private MediaPlayer player;
private Button right;
private Intent intenku;

3)  Untuk menjalankan musik mp3 digunakan perintah berikut:

player = MediaPlayer.create(this, R.raw.doa); //memanggil file doa.mp3 dalam folder raw
player.setLooping(true); //perintah untuk mengulang
player.start(); //perintah untuk mulai menjalankan file mp3

File mp3-nya sudah disimpan dalam foder raw dengan nama file doa.mp3, jadi hanya dipanggil nama file-nya saja.

4) Setiap akan pindah halaman maka musik dimatikan lalu berganti halaman, seperti perintah berikut

player.stop();    //menghentikan musik atau sound

intenku = new
Intent(pindah.getContext(), Halaman_1.class); //pindah ke Halaman_1
startActivityForResult(intenku, 0);

 

11. Setelah menyelesaikan file CoverPaket.java dan cover_paket.xml maka sekarang mulai membuat halaman-halaman baru lagi, juga membuat file xml untuk layout pasangannya.

 

Cara membuat class java baru:

1) Pada payar IDE, klik mouse-kiri di folder java, lalu klik menu File –> New… atau cara singkatnya dengan klik mouse-kanan pada folder java sehingga muncul pilihan berikut

new-class

2) Pilihlah Java Class, lalu muncul tampilan berikut

halaman_1

3) Sebagai contoh, isi Nama: Halaman_1 dan Kind: Class, yaitu halaman baru yang akan dibuat. Halaman-halaman lain dibuat dengan cara yang sama seperti tadi.

 

Cara membuat file layout baru:

1) Klik mouse-kiri di folder layout, lalu klik menu File –> New…  atau cara singkatnya klik mouse-kanan pada folder layout sehingga muncul tampilan berikut

 layout

2) Pilih Layout resource file sehingga muncul tampilan berikut

layout_halaman_1

3) Sebagai contoh, isi File name: halaman_1Root element: RelativeLayout, Directory name: layout, lalu tekan button OK sehingga muncul di layout file halaman_1.xml. Semua file xml di layout dibuat dengan cara yang sama seperti di atas. Lakukan untuk halaman- halaman lainnya.

12. Isi file halaman_1.xml adalah sebagai berikut

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/background"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:alpha="0"
        android:layout_alignParentLeft="true"
        android:layout_above="@+id/linearLayout1"
        android:layout_alignParentTop="true" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="5dp"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/left_button"
            android:layout_width="100sp"
            android:layout_height="40sp"
            android:drawableLeft="@drawable/kiri"
            android:text="@string/left_button"
            android:textSize="14sp" />

        <Button
            android:id="@+id/next_button"
            android:layout_width="100sp"
            android:layout_height="40sp"
            android:drawableRight="@drawable/kanan"
            android:text="@string/next_button"
            android:textSize="14sp" />
    </LinearLayout>

</RelativeLayout>

dengan tampilan visualnya adalah

visual_halaman_1

 

Penjelasan:

Halaman 1 menggunakan file gambar background (background.png) yang diletakkan di folder raw dengan properties berikut ini

android:background="@drawable/background"

Halaman 1 juga berisi file html menggunakan komponen widget WebView yang ber-ID webView1. Harga layout_height diatur sesuai proporsi halaman dan tidak menutup komponen yang lain.

<WebView
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:alpha="0.7"
    android:layout_alignParentLeft="true"
    android:layout_above="@+id/linearLayout1"
    android:layout_alignParentTop="true" />

 

Halaman 1 memiliki navigasi ke kiri dengan button drawableLeft dan ke kanan dengan button drawableRight. Transparansi halaman WebView diatur dengan harga android:alpha dari harga 0 (100% transparan) sampai dengan harga 1 (100% tidak transparan)

 

13. Isi Halaman_1.java adalah berikut ini

package paket.program;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;

public class Halaman_1 extends Activity {
    private MediaPlayer player;
    private Button right,left;
    private WebView wv;

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

        player = MediaPlayer.create(this, R.raw.karo);
        player.setLooping(true);
        player.start();

        wv = (WebView) findViewById(R.id.webView1);
        String content = ambilResource(getResources(),R.raw.redoks);
            String mimeType = "text/html";
            String encoding = "UTF-8";
            wv.loadDataWithBaseURL("file:///android_asset", content, mimeType, encoding, null);

        left = (Button) this.findViewById(R.id.left_button);
        left.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                player.stop();
                Intent myIntent = new
                        Intent(v.getContext(), CoverPaket.class);
                        startActivityForResult(myIntent, 0);

            }
        });


        right = (Button) this.findViewById(R.id.next_button);
        right.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                player.stop();
                Intent myIntent = new
                        Intent(v.getContext(), Halaman_2.class);
                        startActivityForResult(myIntent, 0);
            }
        });
    }

    public static String ambilResource(Resources resources, int resId) {
        InputStream rawResource = resources.openRawResource(resId);
        String content = ubahKeString(rawResource);
        try {rawResource.close();} catch (IOException e) {}
        return content;
    }

    private static String ubahKeString(InputStream in) {
        String l;
        BufferedReader r = new BufferedReader(new InputStreamReader(in));
        StringBuilder s = new StringBuilder();
        try {
            while ((l = r.readLine()) != null) {
                s.append(l + "n");
            }
        } catch (IOException e) {}
        return s.toString();
    }
}

Penjelasan:

1) Untuk menjalankan musik yang berada dalam folder raw dengan nama file karo.mp3 digunakan perintah berikut:

player = MediaPlayer.create(this, R.raw.karo);
player.setLooping(true);
player.start();

player.setLooping(true) digunakan untuk mengulang ‘playing’  karo.mp3, dan player.start() untuk memulai.

2) Untuk menampilkan file html (redoks.html) yang disimpan dalam folder raw digunakan perintah berikut

wv = (WebView) findViewById(R.id.webView1);
String content = ambilResource(getResources(),R.raw.redoks);
String mimeType = "text/html";
String encoding = "UTF-8";
wv.loadDataWithBaseURL("file:///android_asset", content, mimeType, encoding, null);

3) Untuk navigasi ke kiri digunakan perintah berikut

left = (Button) this.findViewById(R.id.left_button);
left.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        player.stop();
        Intent myIntent = new
            Intent(v.getContext(), CoverPaket.class);
            startActivityForResult(myIntent, 0);
    }
});

4) Sebelum pindah ke halaman lain (dari Halaman 1 ke CoverPaket), jika musik masih ‘playing’ maka perlu distop dulu menggunakan perintah

player.stop();

5) Navigasi ke kanan menggunakan perintah berikut

right = (Button) this.findViewById(R.id.next_button);
right.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        player.stop();
        Intent myIntent = new
            Intent(v.getContext(), Halaman_2.class);
            startActivityForResult(myIntent, 0);
    }
});

6) Sama dengan navigasi ke kiri, sebelum pindah ke halaman lain (dari Halaman 1 ke Halaman 2) maka musik distop dulu dengan player.stop(), baru pindah ke Halaman 2 dengan perintah

Intent(v.getContext(), Halaman_2.class);

 

14. Halaman selanjutnya adalah halaman 2, hanya berisi komponen widget ImageView dan button dengan gambar seperti isi file halaman_2.xml di bawah ini

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/background"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/left_button"
            android:layout_width="130sp"
            android:layout_height="40sp"
            android:drawableLeft="@drawable/kiri"
            android:text="@string/left_button"
            android:textSize="14sp" />

        <Button
            android:id="@+id/next_button"
            android:layout_width="130sp"
            android:layout_height="40sp"
            android:drawableRight="@drawable/kanan"
            android:text="@string/next_button"
            android:textSize="14sp" />
    </LinearLayout>

        <TextView
            android:id="@+id/txtHal_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="32dp"
            android:layout_marginLeft="20sp"
            android:text="@string/txtHal_2"
            android:textColor="#ff00ff"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/fotosintesis"
            android:contentDescription="@string/todo"/>

</RelativeLayout>

 

Left_button menggunakan drawableLeft dengan gambar kiri.png yang tersimpan di folder drawable, next_button menggunakan drawableRight dengan gambar kanan.png yang tersimpan di folder drawable.

Gambar dimasukkan ke layout dengan widget <ImageView … />, file gambar yaitu fotosintesis.png tersimpan dalam folder drawable dengan tampilan visual seperti berikut ini

visual_halaman_2

 

15. Untuk menggerakan halaman 2 dilakukan di file java Halaman_2.java yang berisi

package paket.program;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Halaman_2 extends Activity {
    private MediaPlayer player;
    private Button next,left;

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

        player = MediaPlayer.create(this, R.raw.insya);
        player.setLooping(true);
        player.start();

        left = (Button) this.findViewById(R.id.left_button);
        left.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                player.stop();
                Intent myIntent = new
                        Intent(v.getContext(), Halaman_1.class);
                        startActivityForResult(myIntent, 0);
            }
        });

        next = (Button) this.findViewById(R.id.next_button);
        next.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                player.stop();
                Intent myIntent = new
                        Intent(v.getContext(), Halaman_3.class);
                        startActivityForResult(myIntent, 0);
            }
        });
    }
}

 
Penjelasan:

Hampir sama dengan halaman 1, untuk menjalankan musik insya.mp3 yang ada di folder raw digunakan player, navigasi button kiri (left_button) untuk ke halaman 1 menggunakan drawableLeft dan button ke kanan (next_button) untuk ke halaman 3 menggunakan drawableRight seperti yang terlihat di layout.

 

16. Halaman 3, 4 dan 5 hampir sama, karena hanya berisi komponen widget ImageView, jadi penjelasannya sama dengan halaman 1 dan 2, kecuali halaman 5 ada tambahan penggunaan <TableLayout …> yang digunakan untuk wadah ImageView dan TextView. Silahkan pelajari sendiri format penulisan TableLayout-nya.

 

17. Halaman 6 memasukkan komponen widget VideoView, button stop dan play video, disamping button untuk navigasi ke kiri dan ke kanan seperti terlihat dalam file halaman_6.xml berikut ini.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

    <VideoView
        android:id="@+id/video"
        android:layout_width="wrap_content"
        android:layout_height="300dip"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp" />

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="50dp"
        android:orientation="horizontal" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/left_button"
            android:layout_width="130sp"
            android:layout_height="40sp"
            android:drawableLeft="@drawable/kiri"
            android:text="@string/left_button"
            android:textSize="14sp" />

        <Button
            android:id="@+id/next_button"
            android:layout_width="130sp"
            android:layout_height="40sp"
            android:drawableRight="@drawable/kanan"
            android:text="@string/next_button"
            android:textSize="14sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearLayout2"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="34dp" >

        <Button
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="STOP" />

        <Button
            android:id="@+id/play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="PLAY" />

    </LinearLayout>

</RelativeLayout>

 

18. Untuk menjalankan file xml itu dilakukan pada file Halaman_6.java yang berisi seperti berikut ini

package paket.program;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.net.Uri;
import android.widget.VideoView;

public class Halaman_6 extends Activity {
    private Button right,left,stop,play;
    private VideoView vid;

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


        vid = (VideoView) findViewById(R.id.video);

        String urlpath ="android.resource://" + getPackageName() + "/" + R.raw.reaksiredoks;
        vid.setVideoURI(Uri.parse(urlpath));


        play = (Button) this.findViewById(R.id.play);
        play.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                vid.start();
            }
        });

        stop = (Button) this.findViewById(R.id.stop);
        stop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                vid.stopPlayback();
            }
        });


        left = (Button) this.findViewById(R.id.left_button);
        left.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                vid.stopPlayback();
                Intent myIntent = new
                        Intent(v.getContext(), Halaman_5.class);
                        startActivityForResult(myIntent, 0);

            }
        });


        right = (Button) this.findViewById(R.id.next_button);
        right.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                vid.stopPlayback();
                Intent myIntent = new
                        Intent(v.getContext(), Halaman_7.class);
                        startActivityForResult(myIntent, 0);
            }
        });
    }

}

 

Penjelasan:

1) Untuk menjalankan video reaksidredoks.3gp yang disimpan di folder raw digunakan perintah sebagai berikut:

vid = (VideoView) findViewById(R.id.video);

String urlpath ="android.resource://" + getPackageName() + "/" + R.raw.reaksiredoks;
vid.setVideoURI(Uri.parse(urlpath));

 

2) Perintah memulai ‘playing’ menggunakan vid.start(); seperti berikut:

play = (Button) this.findViewById(R.id.play);
play.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
           vid.start();
    }
})

 

Sedangkan perintah stop menggunakan vid.stopPlayback(); seperti berikut:

stop = (Button) this.findViewById(R.id.stop);
stop.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        vid.stopPlayback();
    }
});

3) Navigasi ke kiri dan ke kanan untuk pindah halaman sama saja dengan halaman sebelumnya, tetapi untuk mengantisipasi video yang masih ‘playing’ maka sebelum pindah halaman dilakukan perintah vid.stopPlayback();.

 

19. Layout halaman selanjutnya yaitu halaman 7 (halaman_7.xml) hanya berisi widget WebView sehingga penjelasannya sama dengan dengan halaman sebelumnya, begitu pula file java halaman 7 (Halaman_7.java) sama dengan halaman sebelumnya.

 

20. Halaman terakhir dalam proyek android ini adalah halaman 8, sebenarnya sama dengan halaman 7 hanya berisi widget WebView, sehingga penjelasan file halaman_8.xml sama saja, tetapi karena ini halaman terakhir maka ada perbedaan pada button navigasi ke kanan, yaitu keluar atau kembali ke halaman 1. Jika navigasi ke kanan digunakan untuk kembali ke halaman satu maka digunakan button navigasi next_button seperti penggunaan pada halaman lain, hanya saja sekarang kembali ke halaman 1. Jika navigasi ke kanan digunakan untuk keluar maka digunakan perintah startActivity(exit); seperti berikut:

stop = (Button) this.findViewById(R.id.stop_button);
stop.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        player.stop();

        Intent exit = new Intent (Intent.ACTION_MAIN);
        exit.addCategory(Intent.CATEGORY_HOME);
        exit.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        startActivity(exit);
    }
});

 

21. Pengaturan halaman splash

Halaman splash adalah halaman yang tampil sekilas, beberapa detik, sebelum muncul halaman utamanya. Pengaturannya terlihat pada file splash.xml dan splash.java seperti di bawah ini.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="bottom"
    android:background="@drawable/kimia_0" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Dev: Kasmui" />

</LinearLayout>

 

Layout splash.xml hanya berisi tampilan ‘sponsorship’, berisi gambar background kimia_0.jpg yang tersimpan pada folder drawable. Tentu saja isinya bebas, baik menggunakan teks, html maupun gambar.

Isi file splash.java adalah sebagai berikut:

package paket.program;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class splash extends Activity {

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

        Thread timer = new Thread() {
            public void run() {
                try {
                    sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    Intent i = new Intent(splash.this,CoverPaket.class);
                    startActivity(i);
                    splash.this.finish();
                }
            }
        };
        timer.start();
    }
}

 

Penjelasan

Tampilan pada halaman layout ditahan selama 10000 milidetik (10 detik) menggunakan perintah sleep(10000); Setelah 10 detik maka secara otomatis akan berpindah ke halaman CoverPaket, seperti di atas atau halaman lain yang diletakkan pada Intent().

 

22. Semua halaman yang sudah dibuat tidak akan bisa dijalankan apabila file AndroidManifest.xml tidak diatur. Isinya sebagai berikut

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="paket.program"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="paket.program.CoverPaket"
            android:label="@string/app_name" >

        </activity>

        <activity android:name=".splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"></action>
                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_1"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_1" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_2"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_2" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_3"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_3" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_4"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_4" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_5"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_5" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_6"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_6" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_7"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_7" />
            </intent-filter>
        </activity>

        <activity
            android:name="paket.program.Halaman_8"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.halaman_8" />
            </intent-filter>
        </activity>



    </application>

</manifest>

 

Penjelasan:

Agar splash muncul diawal maka diletakkan sebagai Launcher pada activity sebagai berikut

        <activity android:name=".splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"></action>
                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent-filter>
        </activity>

 

Setelah itu semua halaman didaftarkan dalam file manifest itu.

 

23. Selesai!

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *