ETS-PPB
MyGallery β Aplikasi Manajemen Galeri Pribadi
Nama: Muhamad Faiz Fernanda
NRP: 5025211186
Kelas: PPB-A
Deskripsi Singkat
MyGallery adalah aplikasi mobile berbasis Android yang dibangun menggunakan bahasa pemrograman Kotlin dengan dukungan Jetpack Components seperti RecyclerView dan Material Components. Aplikasi ini dirancang untuk menjadi galeri pribadi yang ringan dan mudah digunakan, memungkinkan pengguna menambahkan foto dari galeri atau kamera, menyimpan data secara lokal menggunakan SharedPreferences, serta menampilkan foto dalam tampilan grid yang estetik. Pengguna juga dapat melihat gambar dalam mode fullscreen dan menghapus banyak foto sekaligus menggunakan fitur multi-select. Untuk memastikan performa yang optimal, aplikasi ini menggunakan library Glide sebagai media loader untuk menampilkan gambar dengan efisien. Dengan penerapan tema gelap dan terang otomatis (Material DayNight), aplikasi ini memberikan pengalaman pengguna yang modern dan nyaman di berbagai kondisi pencahayaan.
- Menambahkan foto dari galeri atau kamera langsung
- Melihat pratinjau dalam tampilan layar penuh
- Multi-select untuk menghapus lebih dari satu foto sekaligus
Fitur Utama
- π€ Tambah Foto: dari galeri atau kamera
- πΌοΈ Tampilan Grid: dengan label otomatis
- π Preview: layar penuh
- β Multi-Select: untuk hapus beberapa foto
- ποΈ Hapus Sekaligus: satu klik hapus banyak
- πΎ Penyimpanan Otomatis: ke SharedPreferences
π― Manfaat
- Mempermudah pengelolaan koleksi foto pribadi
- Tampilan ringan tanpa aplikasi galeri bawaan yang berat
- Interaksi sederhana dan cepat (klik/tekan lama)
π§ Teknologi yang Digunakan
- Android Kotlin (Jetpack, RecyclerView)
- SharedPreferences untuk penyimpanan lokal
- Glide untuk loading gambar yang efisien
Fitur dan Penjelasan Teknis
1. Menambahkan Foto dari Galeri atau Kamera
Pengguna dapat menambahkan gambar dari galeri atau mengambil gambar langsung dari kamera menggunakan Intent
:
Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, PICK_IMAGE_CODE);
Untuk kamera:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE);
2. Tampilan Grid Menggunakan RecyclerView
Gambar ditampilkan dalam tampilan grid menggunakan RecyclerView
dan GridLayoutManager
. Sudut gambar dibuat melengkung agar lebih estetik.
recyclerView.layoutManager = GridLayoutManager(this, 2); recyclerView.adapter = ImageAdapter(dynamicImageList);
3. Tampilan Fullscreen
Pengguna dapat melihat foto secara fullscreen ketika gambar diklik.
Glide.with(this) .load(Uri.parse(imageUri)) .into(imageView);
4. Penyimpanan Otomatis ke SharedPreferences
Data URI gambar disimpan dalam bentuk JSON agar gambar tetap muncul meskipun aplikasi ditutup.
val json = gson.toJson(dynamicImageList) sharedPrefs.edit().putString(PREF_KEY, json).apply()
5. Multi-Select dan Delete Sekaligus (Fitur Tambahan)
Fitur tambahan memungkinkan pengguna memilih beberapa gambar sekaligus dan menghapusnya dengan mudah.
val selectedItems = mutableListOf<ImageItem>() imageView.setOnLongClickListener { selectedItems.add(imageItem) adapter.notifyItemChanged(position) true } fun deleteSelectedItems() { dynamicImageList.removeAll(selectedItems) saveImages() adapter.notifyDataSetChanged() }
6. Floating Action Button (Expandable FAB)
Tombol utama "+" dapat membuka dua tombol lainnya (kamera dan upload) dengan animasi untuk meningkatkan UX.
private fun animateFab(fab: View, show: Boolean, offsetY: Float) { fab.animate() .translationY(if (show) offsetY else 0f) .alpha(if (show) 1f else 0f) .scaleX(if (show) 1f else 0f) .scaleY(if (show) 1f else 0f) .setDuration(200) .start() }
Tampilan Aplikasi :
πΉ Demo & Unduhan
π¬ Video Demo:
π₯ Unduh Aplikasi: Download MyGallery.apk
π Source Code: https://github.com/Danar1111/MyGallery-Kotlin.git
Komentar
Posting Komentar