Halo Pembaca,

Seharusnya Anda tahu apa itu notifikasi pada Android. Ya, sebuah pesan yang kehadirannya biasanya diawali dengan suara dan getaran kemudian muncul ikon pada batang info (info bar), dan saat kita mengusap batang info, kita akan dapat melihat dengan jelas pesan tersebut. Nah kali ini saya ingin menjelaskan cara membuat notifikasi dengan sedikit kustomisasi.

Kita langsung saja ke pokok bahasan. Seperti biasa, buatlah sebuah workspace lebih dulu.

 Membuat workspace

Membuat workspace

Buat proyek baru dengan ketentuan seperti di bawah ini.

Application Name Latihan 18
Project Name Latihan18
Package Name com.myapp.latihan18
Minimum Required SDK API 11: Android 3.0 (Honeycomb)
Target SDK API 23: Android 6.0
Compile With API 23: Android 6.0
 Dialog pembuatan proyek baru

Dialog pembuatan proyek baru

Tambahkan sebuah berkas layout pada proyek, namai dengan custom_notify.xml.

 Dialog menambahkan layout pada proyek

Dialog menambahkan layout pada proyek

Ubah skripnya menjadi seperti di bawah ini.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linNotify"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#303F9F">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="4dp" >
        
        <ImageView
            android:id="@+id/btnLogoNotif"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:padding="4dp"
            android:src="@drawable/ic_launcher" />
        
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" >
            
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" 
                android:paddingLeft="2dp"
                android:paddingRight="0dp"
                android:paddingBottom="2dp"
                android:layout_gravity="center_vertical"
                android:paddingTop="2dp" >
                <TextView
                    android:id="@+id/txtTitleNotif"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:text="Title"
                    android:singleLine="true"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#FFF" />
                
                <TextView
                    android:id="@+id/txtDescNotif"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:text="Description"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="#FFF" />
            </LinearLayout>
            
            <ImageButton
                android:id="@+id/btnCloseNotif"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:scaleType="fitCenter"
                android:background="@android:color/transparent"
                android:layout_gravity="center_vertical|right"
                android:src="@android:drawable/ic_delete" />
        </FrameLayout>
        
    </LinearLayout>
</LinearLayout>
Tampilan layout akan seperti di bawah ini.

 Desain Layout Notifikasi

Desain Layout Notifikasi

Untuk keperluan pembuatan notifikasi, kita membutuhkan sebuah kelas. Silakan tambahkan kelas baru pada paket utama proyek Anda, namai dengan CustomNotify.

Lengkapi kode sumbernya sehingga menjadi seperti di bawah ini:

package com.myapp.latihan18;

import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.RingtoneManager; import android.net.Uri; import android.os.Vibrator; import android.widget.RemoteViews;

public class CustomNotify { private static final String NOTIFICATION_TAG = "com.myapp.LATIHAN18";

private RemoteViews views; private Notification notification; private Vibrator vibrator; @SuppressWarnings("deprecation") public void notify(final Context context, String title, String desc, int icon) { //Jika parameter icon diset ke 0, maka gunakan ic_launcher if (icon == 0) icon = R.drawable.ic_launcher; //Menentukan suara Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); //Mengambil layout kustom views = new RemoteViews(context.getPackageName(), R.layout.custom_notify); //Membuat notifikasi notification = new Notification(icon, context.getString(R.string.app_name), System.currentTimeMillis()); notification.sound = sound; notification.audioStreamType = AudioManager.STREAM_NOTIFICATION; notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_AUTO_CANCEL; //Membuat kontrol getaran vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); long[] pattern = {0, 1000, 2000, 1000, 2000, 1000, 2000, 1000}; vibrator.vibrate(pattern, -1); //Mengubah ikon dari layout views.setImageViewResource(R.id.btnLogoNotif, icon); //Mengubah Text pada layout views.setTextViewText(R.id.txtTitleNotif, title); views.setTextViewText(R.id.txtDescNotif, desc);

//Memberikan kontrol event saat ikon (logo) diklik views.setOnClickPendingIntent(R.id.btnLogoNotif, showMainActivity(context)); //Mengeset layout pada notifikasi notification.contentView = views; //Menyiapkan notifikasi NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(NOTIFICATION_TAG, 1234, notification); } //Prosedur untuk menampilkan activity saat ikon (logo) diklik private PendingIntent showMainActivity(Context context) { Intent launchActivity = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 12345, launchActivity, 0); return pendingIntent; } }

Sekarang kita tinggal menentukan kapan notifikasi akan ditampilkan. Sebagai contoh, kita tambahkan sebuah Button pada layout activity_main.xml yang nantinya akan kita gunakan untuk menampilkan notifikasi.
<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"
    tools:context="com.myapp.latihan18.MainActivity" >

<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />

<Button android:id="@+id/btnNotification" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="16dp" android:text="Tampilkan Notifikasi" />

</RelativeLayout>

Mari kita ubah kode pada kelas MainActivity menjadi seperti di bawah ini.
package com.myapp.latihan18;

import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;

public class MainActivity extends ActionBarActivity { private Button btnNotification; private CustomNotify customNotify; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Definisikan btnNotification btnNotification = (Button) findViewById(R.id.btnNotification); //Saat btnNotification diklik btnNotification.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { customNotify = new CustomNotify(); customNotify.notify(getApplicationContext(), "Contoh Notifikasi", "Ini adalah contoh notifikasi", 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.main, menu); return true; }

@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }

Sudah bisa diujicoba? Belum, sedikit lagi. :D Karena pada kelas CustomNotify kita menambahkan kontrol vibrasi, kita harus menambahkan ijinnya pada AndroidManifest.xml. Silakan ubah skrip dari berkas AndroidManifest.xml menjadi seperti di bawah ini.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp.latihan18"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" /> <!-- Menambahkan ijin penggunaan vibrasi --> <uses-permission android:name="android.permission.VIBRATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" 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>

Sekarang silakan jalankan aplikasi Anda.

 Tampilan Notifikasi Saat Dijalankan

Tampilan Notifikasi Saat Dijalankan

Klik tombol Tampilkan Notifikasi pada activity. Setelah notifikasi tampil, cobalah menutupnya dengan mengklik tombol X. Tidak bisa, bukan? Ya, karena kita belum menambahkan perintah untuk menutupnya. Bagaimana cara menutup notifikasi? Silakan tunggu pada artikel selanjutnya. :D

Komentar Anda

Komentari