MemesSharing
An Online Meme Sharing app with swipeable vidoes, user can like, share different videos, each viewpager item has one video to show.
1. Flow of App
Untitled.1.mp4
- User can see videos in viewpager by swiping up.
- User can like, share the video after clicking on like, share icon.
- User can play/pause the video after clicking on videoview.
- User can see filtered listview of videos in gridview.
2. Share Video to any other app
20210818_115735.mp4
Video will be available to share after downloading. During downloading video videoview will be paused and user will see a chooser for sharing video.
1. User can play the video after clicking on it(if its paused). icon will show with bounce animation. Screenshots of app:-
- User can pause the video after clicking on it. icon will show with bounce animation.
- User can like or share the video after clicking on like and share imageview.
- User will see listview of different videos types in gridview.
Api end points:-
Used Heroku for deploying api's
- https://memestik.herokuapp.com/items - api to add videos to list, those videos will available in viewpager You can add data to this api using post request using postman like below.
- https://memestik.herokuapp.com/types - api to add items in list video, after clicking on these list view items you will see filtered list view. You can add data to this api using post request using postman like below.
CodeFlow of App
There are two branches of app:-
a) Master branch contain this code
-
Used MVP architecture here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/MemesContract.kt
-
Used coroutines for api calls here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/presenter/MemesPresenter.kt#L68
-
Used Dagger hilt for dependency injection here:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/main/java/com/example/memessharing/deps
-
Used StateFlows for different managing states:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/StateFlows.kt
-
Added tests for coroutines:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/test/java/com/example/memessharing
b) feature/view-impl branch contain this code
-
Removed activity reference from dagger hilt module:- https://github.com/vikasmain/MemesSharing/blob/feature/view-impl/app/src/main/java/com/example/memessharing/deps/MainModule.kt
-
Created a separate view implementation for view interface:- https://github.com/vikasmain/MemesSharing/blob/feature/view-impl/app/src/main/java/com/example/memessharing/view/MemeViewImpl.kt
-
Used MVP architecture here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/MemesContract.kt
-
Used coroutines for api calls here:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/presenter/MemesPresenter.kt#L68
-
Used Dagger hilt for dependency injection here:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/main/java/com/example/memessharing/deps
-
Used StateFlows for different managing states:- https://github.com/vikasmain/MemesSharing/blob/master/app/src/main/java/com/example/memessharing/StateFlows.kt
-
Added tests for coroutines:- https://github.com/vikasmain/MemesSharing/tree/master/app/src/test/java/com/example/memessharing