Code Monkey home page Code Monkey logo

pexwallpapersxml's Introduction

visitors

Welcome to PexWallpapers!

Hi! PexWallpapers is one of my current projects. The app use Pexels.com image library to show pictures/wallpapers in the app. You can browse different categories or just use Search to find some beautiful wallpapers for your phone. If you add wallpapers to favourites than you can turn on Auto Wallpaper Setter in Settings, to have your phone wallpaper changed every specific period of time.

Setup

To run app:

  1. git clone repo to Android studio

  2. Get your own Api Key from Pexels.com

  3. Add your own Api Key to gradle.properties in this format

    pex_api_access_key="234f9170000324234012343d044b1a3482ba588"

  4. And run in emulator or on physical device

Stack

  • MVVM architecture
  • Retrofit for pulling data from network
  • Room for persistence
  • Coroutines for threading
  • All Retrofit and Room logic handled in Repository
  • ViewModel handles logic between UI and Repository using Flows and Coroutines
  • Using Coil for fetching images from web
  • Hilt for dependency injection
  • Paging 3 for displaying long Wallpaper lists from web
  • Navigation Component for navigation in an app ofc
  • Data Binding
  • Lottie is used in a SwipeRefreshLayout
  • Shimmer effect for while loading Wallpapers
  • UI testing and Unit testing (in progress)

Screens - Features

Wallpaper Screen

  • Wallpaper Screen shows Curated Photos form Pexels.com.
  • Images are displayed in Staggered Recycler View using ListView Adapter.
  • Menu button lets display menu with one action Refresh
  • You can Swipe down to refresh list too.
  • All results are saved in local database.

PexWallpapers - Wallpapers Screen

Search Screen

  • To display wallpapers in Search screen use searchView to search your query.
  • When searchView is focused it shows Suggestions saved in Room database.
  • Every new search adds suggestion to database.
  • Added suggestion have close button next to suggestion name.
  • Suggestions are displayed in Horizontal RecyclerView.
  • Suggestions are filtered while typing in searchview.
  • Swipe down to refresh list.
  • Search results are paginated.
  • Menu button lets display menu with one action Refresh
  • All results are saved in local database.

PexWallpapers - Search screen

Favourites Screen

  • Gets favorites from local database
  • Instagram style Double Click to Heart wallpaper
  • Swipe down to refresh list.
  • Menu button lets display menu with one action Refresh
  • List displayed in single column recyclerView

PexWallpapers - Favorites Screen

Preview Screen

  • Shows full screen preview, with bottom navigation hidden
  • At the bottom of screen is swipe handle, opening BottomSheet with wallpaper actions

PexWallpapers - Preview Screen

Preview - Bottom Sheet

  • Shows image thumbnail and info about photographer
  • Pexels button witch takes you to Pexels.com website with current picture
  • Share button lets share picture in social media, message etc
  • Heart image for liking/disliking image witch syncs automatically with local database using ** Flow**
  • Set Wallpaper button takes you to next screen
  • Horizontal list shows similar wallpapers from the same category.

PexWallpapers - Preview Bottom Sheet

Copyright

Copyright 2021 Adrian Witaszak

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

pexwallpapersxml's People

Contributors

charlee-dev avatar

Stargazers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.