Cara Membuat Image Gallery Menggunakan GridView
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada tutorial ini kita akan belajar, bagaimana Cara Membuat Image Gallery menggunakan GridView di Android Studio, Image Gallery yang akan kita buat, tampilannya hampir mirip dengan image gallery pada aplikasi seperti Instagram, dengan tampilan Grid atau Kotak-kotak, untuk memudakan kita membuat tampilan seperti itu, kita akan membuat layout tersebut dengan GridView.
Pada program aplikasi yang akan kita buat ini, dimana pada aplikasi tersebut akan banyak sekali menampilkan thumbnails/gambar berukuran kecil, ketika salah satu gambar tersebut diklik, maka akan muncul gambar tunggal dengan ukuran yang lebih besar.
Saya sarankan kalian sudah mempersiapkan gambarnya terlebih dahulu, disini saya menggunakan 20 gambar yang akan ditampilkan pada GridView, untuk resolusi gambar, jangan terlalu besar, resolusi pada gambar yang saya gunakan yaitu 200 x 200.
Materi lainnya yang direkomendasikan:
- Cara Membuat Layout GridView di Android Studio
- Belajar Cara Membuat Absolute Layout di Android Studio
- Belajar Cara Membuat Table Layout di Android Studio
Cara Membuat Image Gallery Menggunakan GridView
1) Buka aplikasi Android Studio kalian, Buat Project Baru.2) Simpan gambar yang sudah kalian siapkan, pada direktori res > drawable.
3) Selanjutnya buat class baru, berinama "ImageAdapter", class ini digunakan untuk mengatur konten yang akan ditampilkan.
package android.cianjur.developer.net.basicandroid;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
/**
* Created by Wildan M Athoillah on 22/01/2018.
*/
//Digunakan Untuk Mengatur Konten yang Akan Ditampilkan
class ImageAdapter extends BaseAdapter {
//List Konten Gambar yang akan ditampilkan pada GridView
static int[] gambar = {R.drawable.kucing1, R.drawable.kucing2, R.drawable.kucing3,
R.drawable.kucing4, R.drawable.kucing5, R.drawable.kucing6,
R.drawable.kucing7, R.drawable.kucing8, R.drawable.kucing9,
R.drawable.kucing10, R.drawable.kucing11, R.drawable.kucing12,
R.drawable.kucing13, R.drawable.kucing14, R.drawable.kucing15,
R.drawable.kucing16, R.drawable.kucing17, R.drawable.kucing18,
R.drawable.kucing19, R.drawable.kucing20};
private Context mContext;
//Membuat Contructor, dengan parameter Context, Untuk menghubungkan Adapter dengan GridView
ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
//Menghitung Jumlah/Panjang dari Daftar Konten
return gambar.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
//Membuat ImageView baru untuk setiap item yang direferensikan oleh Adaptor
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
//Jika tidak di daur ulang
if (convertView == null) {
//Menginisialisasi beberapa atribut
imageView = new ImageView(mContext);
//Mengatur Panjang dan Lebar pada ImageView
imageView.setLayoutParams(new GridView.LayoutParams(120, 120));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//Mengatur Padding
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
//Mengset Image dari Resource/Sumber berdasarkan posisinya
imageView.setImageResource(gambar[position]);
return imageView;
}
}
Pada Kelas ImageAdapter kita mengexends atau mewarisi fungsi dari kelas BaseAdapter dan mempunyai beberapa method bawaan, seperti getView(), getCount(), getItem(), getItemId().
4) Buka file activity_main.xml kalian, disini kita akan mengatur layout untuk tampilan GridView pada activity kita.
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF5F5F5"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
tools:context="android.cianjur.developer.net.basicandroid.MainActivity">
</GridView>
Penjelasan pada atribut-atribut yang digunakan:
5) Setelah itu, kita buat file activity ViewGambar.java yang berfungsi untuk menampilkan gambar tunggal dari gallery menggunakan ImageView. Buka file activity_view_gambar.xml, Kalian buat layoutnya seperti ini.
Buka file AndroidManifest.xml (didalam direktori main), disini kita akan menghilangkan ActionBar bawan pada Activity ViewGambar, kalian tambahkan atribut berikut ini, didalam Activity ViewGambar.- android:columnWidth : Menentukan lebar tetap pada masing-masing kolom.
- android:gravity : Menentukan gravitasi di dalam setiap sel.
- android:verticalSpacing : Mendefinisikan default jarak vertikal antar baris.
- android:stretchMode : Mendefinisikan bagaimana kolom harus meregang untuk mengisi tersedia ruang kosong, jika ada.
- android:horizontalSpacing : Mendefinisikan default jarak horisontal antara kolom.
- android:numColumns : Menentukan berapa kolom yang akan ditampilkan.
5) Setelah itu, kita buat file activity ViewGambar.java yang berfungsi untuk menampilkan gambar tunggal dari gallery menggunakan ImageView. Buka file activity_view_gambar.xml, Kalian buat layoutnya seperti ini.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="#000000"
tools:context="android.cianjur.developer.net.basicandroid.ViewGambar">
<ImageView
android:id="@+id/viewImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<activity android:name=".ViewGambar"
android:theme="@style/Theme.AppCompat.NoActionBar">
</activity>
6) Berikutnya buka file ViewGambar.java masukan source code berikut:package android.cianjur.developer.net.basicandroid;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
public class ViewGambar extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_gambar);
int imgPosition = this.getIntent().getExtras().getInt("posisi");
ImageView iv = findViewById(R.id.viewImage);
int getImage = ImageAdapter.gambar[imgPosition];
iv.setImageResource(getImage);
}
}
Pada imgPosition, kita memanggil key/kata kunci "posisi" untuk mendaptkan posisi dari Image yang sedang diklik.Gambar akan ditampilkan pada ImageView, berdasarkan imgPosition/Posisi gambar yang user klik, didalam variable getImage, disana kita medapatkan gambar pada variable Array (gambar) didalam , class ImageAdapter, sesuai dengan posisi pada gambar
Lalu menampilkannya menggunakan fungsi setImageResource().
7) Selanjutnya buka file MainActiviy.java, Masukan source code berikut ini:
package android.cianjur.developer.net.basicandroid;
/*
Dibuat Oleh WILDAN M ATHOILLAH
*/
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements OnItemClickListener{
//Deklarasi Variable GridView
protected GridView TampilanGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setTitle("Image Gallery");
TampilanGrid = findViewById(R.id.gridview);
//Mengset/Menerapkan adapter pada GridView
TampilanGrid.setAdapter(new ImageAdapter(this));
//Membuat Listener untuk menangani kejadian saat salah satu item di dalam GrdiView diklik
TampilanGrid.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView adapterView, View view, int position, long l) {
Toast.makeText(MainActivity.this, "Posisi yan diklik : "+position, Toast.LENGTH_SHORT).show();
Intent nextPage = new Intent(this, ViewGambar.class);
Bundle bundle = new Bundle();
//Menyimpan nilai dari padameter position kedalah key posisi.
//Yang akan dikirimkan pada Activiy ViewGambar
bundle.putInt("posisi", position);
nextPage.putExtras(bundle);
startActivity(nextPage);
}
}
Demo:
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.
Wassalamualaikum Warahmatullahi Wabarakatuh.