- Intuitive and neatly stacked UI, implementing some
Material Design
guidelines - View current weather conditions,
- Weather forecasts up to
10
days, Search
,add
anddelete
a location to view its weather details, and also cast it as the favourite location,- Receive daily weather notifications (for the favourite location),
- Send feedback,
- Apply preferences through settings.
- Error handling in case of server error or network loss
A Volley
RequestQueue is used to fetch data from the WeatherAPI
and is loaded into the views.
Astronomical data is loaded into the bottom view, e.g. Sunrise
. The hours of the day are loaded as a fragment over the astronomical view.
The app provides up to 10
days of weather forecasting, the number of forecast days to show may be tweaked from the settings page of the app.
The app allows navigation from one forecast day to another through a ViewPager2
or attached TabLayout
. The weather data may be refreshed using the reload button.
Search
andAdd
:Search / Autocomplete
complete feature of theWeatherAPI
is utilized in finding new locations to add to the location manager.Delete
: A location can also deleted, and if that directive is issued aSnackBar
is displayed to the user with anUndo
prompt if the location should be restored into the list.Favourite
: The location in the list can be clicked in order to enable it as the favourite location, where background colour changeds to yellow. What this means is that it's initially open the app opens, and this is the location used in delivering daily notifications.
Daily notifications are sent to user as a user-defined or default time, notifications can be turned on or off in the settings page. Notification displays the minimal weather information and clicking on it opens the app and displays the current weather information.
The app allows users to send feedback of their own review. The feedbacks are sent successfully using the FapiMail
API and a Toast
is sent to the user notifying them of the sent feedback.
Notification
: Turns notificationson
oroff
, and also set the delivery timeDegree
: Set to eithercelcius
orfahrenheit
,Measurements
: Use eithermetric
orimperial
measurement system,Forecast
: Set the number of forecast days to show for the weather forecast, with a max of10
and min of1
Refresh data cache
: Refreshes the data cache after a certain time interval
In the event of a network failure a custom extension of the Volley library's ErrorListener
is implemented. If the reload button is clicked an attempt to fetch the data is made again.
If the request to the server returns an error code, the error screen is shown and the reload button is clicked as the day is set back to the current one and an attempt to fetch the data is made again.
- Material Design Principles
- Animations
- Creating custom asynchoronous classes
- DialogFragments
- Preferences
- TabLayout
- BroadcastReceivers and Services
- NavigationDrawer
- Custom Views
- Notifications
- JavaDocs
- WeatherAPI, providing the essential weather data to run the app,
- Glide, loading images into the app,
- Flaticon, for using base weather icons which I further customized,
- FapiMail, sending feedback to developer email,
- Mock Video and Giphy, in using their tools to create demonstration gifs.