- Clean Architecture + MVVM
- Hilt
- Navigation Compose
- ViewPager2
- Fragments
- RecyclerView
- Bottom Navigation Bar
- LiveData
- DataBinding
- Kotlin Coroutines
- Room
- Retrofit
- Glide
- Lottie
Timeline.1.mov
Tüm veriler API aracılığı gelmektedir. TabLayout itemlarına tıklayınca RecyclerView'ın verileri değişmektedir. RecyclerView'ın herhangi bir item'ına tıklayınca Detail Fragment'a gidilmektedir.
Tıklanılan item'ın tüm verileri bu ekranda gösterilmektedir.Tüm resimler sol üstteki butona tıklayınca Image Detail Fragment'a gönderilir. Tüm resimler Image Detail Fragment'ta ViewPager yardımıyla slide edilerek görüntülenmektedir. Add Bookmark butonuna tıklayınca Backend'e istek atılarak isBookmark değeri true olarak değiştirilir ve Trip Fragment'a yönlendirilir.
Bu ekrandaki tüm veriler API aracılığı ile gelmektedir. Liste elemanlarına tıklayınca Detail Fragment'a gidilmektedir. Nearby Attractions kategorisindeki itemların sol üstünde bulunan butona tıklayınca Backend'e istek atılarak isBookmark değeri true olarak değiştirilir. Kullanıcı burada Search işlemi de yapabilmektedir. Kullanıcı aratmak istediği kelimeyi yazdıktan sonra ara butonuna bastığında Search Result ekranına yönlendirilmektedir.
Üstteki TabLayout sayesinde RecyclerView içindeki veriler değiştirilmektedir. Trips kısmındaki veriler Room database'den gelmektedir. Bookmark kısmındaki veriler ise API aracılığı ile gelmektedir. Bookmark kısmında sadece isBookmark değeri true olan veriler gelmektedir. Liste elemanları sola kaydırıldıklarında kaldırılmaktadırlar. Trips kısmındaki veriler item sola kaydırıldığında room databaseden silinmektedir. Bookmark kısmında ise Backend'e istek atılarak isBookmark değeri false olarak değiştirilmektedir.
Floating action button'a tıklanıldığında bottom sheet fragment açılmaktadır. İki adet seçenek sunulmaktadır. Create Your Trip seçeneğinde kullanıcı kendi planladığı gezileri oluşturabilmektedir. Select for bookmark seçeneğinde ise Backend tarafındaki veriler sunularak kullanıcı bookmark kısmına istediği yeri ekleyebilmektedir.
Tüm veriler API aracılığı ile gelmekte ve RecyclerView içinde gösterilmektedir. Kullanıcı ekle butonuna tıklayarak istediği yerleri bookmark kısmına ekleyebilmektedir.
Bu ekranda kullanıcı yapmayı planladığı geziyi oluşturabilmektedir. Üstteki ImageView'a tıklayınca Image Search ekranına yönlendirilmektedir. Alttaki Date butonuna tıklayınca DatePicker açılmaktadır. Kullanıcı hangi tarih aralıklarında seyahat etmek istediğini DatePicker ile seçebilmektedir. Tüm bilgiler girildikten sonra kaydet butonuna basılırsa veriler room database'e kaydedilmektedir. Eğer bilgilerden biri bile eksik ise kaydetme işlemi yapılmamakta ve kullanıcıya Toast mesajı gösterilmektedir.
Kullanıcı gitmeyi planladığı yerle ilgili resim aratması yapıp istediği resmi seçebilmektedir. Aratılan resimler Pixabay tarafından sunulan API aracılığı ile gelmekte ve RecyclerView ile gösterilmektedir. Resim seçildikten sonra seçilen resmin Url'si Add Trip ekranına aktarılmaktadır.
Bu ekrandaki tüm veriler API aracılığı ile gelmekte ve RecyclerView ile gösterilmektedir. Kullanıcı isterse Top Pick Articles kategorisindeki verileri kaydedilmektedir. Kullanıcı bu ekranda arama işlemi yapabilmektedir. İstediği kelimeyi yazdıktan sonra Search Result ekranına yönlendirilmektedir.
Bu ekranda aratılan kelimeye uygun veriler gösterilmektedir. API'den çekilen veriler aratılan kelimeye göre filtrelenmektedir.
MIT License
Copyright (c) 2022 Kürşat Kumsuz
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.