Skip to content

An Android Weather App for viewing the current weather conditions and forecast. Using very neat and elegant UI features.

Notifications You must be signed in to change notification settings

AfricanBongo/ClearSkyes

Repository files navigation

☀️ ClearSkyes

An Android weather app with rich and sleek UI



Feature Overview




Viewing current weather

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.




Weather forecasts

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, add, delete, favourite a location

  • Search and Add : Search / Autocomplete complete feature of the WeatherAPI is utilized in finding new locations to add to the location manager.
  • Delete : A location can also deleted, and if that directive is issued a SnackBar is displayed to the user with an Undo 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

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.




Sending feedback

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.




Settings

  • Notification : Turns notifications on or off, and also set the delivery time
  • Degree : Set to either celcius or fahrenheit,
  • Measurements : Use either metric or imperial measurement system,
  • Forecast : Set the number of forecast days to show for the weather forecast, with a max of 10 and min of 1
  • Refresh data cache : Refreshes the data cache after a certain time interval



Network loss/failure

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.




Server error

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.


New things learnt

  • Material Design Principles
  • Animations
  • Creating custom asynchoronous classes
  • DialogFragments
  • Preferences
  • TabLayout
  • BroadcastReceivers and Services
  • NavigationDrawer
  • Custom Views
  • Notifications
  • JavaDocs

Credit to:

  • 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.

About

An Android Weather App for viewing the current weather conditions and forecast. Using very neat and elegant UI features.

Topics

Resources

Stars

Watchers

Forks

Languages