Visit GitHub Repo


This Project contains source code of Weather Android Application, designed similar to Yahoo Weather App, Based on World Weather Online.

**You need to Change the API key in the Constants class **, get your API key from World Weather Online.


  • This application allow users to view the weather forecast for one week.
  • The weather forecast by default available for the four cities mentioned in the assignment.
  • This application allow the user to search for city using city name or zip code, so the user can add cities as many as he want , also he can remove any unwanted city easily .
  • This application store the weather forecast for 7 days from the last time the user open the application while the internet available , The application need internet access for the first open at least.
  • This application is user friendly, easy to use and simple.

#Application design : The application use three activities, the SplashActivity with handle the application initialising to add the default cities if the user open the application for the first time then redirect the user to the MainActivity which has a view pager that provide a fragment for every city to display its weather forecast.

Inside the WeatherFragment all the main operations happen, it send the request to ApiHelper class and receive the response from it using WeatherForeCastCallBacks then update the views.

The user can add or remove cities from CitiesActivity.

ApiHelper mange the API requests, send request data for the ApiInterface and receive the response then store the result if needed then send the data via callbacks.

DatabaseController used to mange the data store operations in simple way to use.

Utility class provide the common operations, which used in many classes.

Constants provide the needed constants to config the app functionality, for example if you want to change the days of forecast just change the NUMBER_OF_DAYS_TO_GET value for the needed days number+1 , the 1 is for the current day.

#Application UX/UI design:

The application design similar to Yahoo Weather App, easy to use and simple, few clicks or actions needed from the user.

All the icons used on the app is from Material Icon Generator.

#Used 3rd party Libraries:

  • Retrofit for API calls.
  • Realm for storing the cities and weather forecast.
  • Glide for image loading.


alt text alt text alt text


Copyright 2017 Hani Al-Momani

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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Become Pro in Android by watching videos