SkyCast is a clean, modern Android weather application built with Java, XML layouts, and the OpenWeather API.
The app provides real-time weather information, GPS-based auto-location, a modern Material UI, and a polished splash screen.
Type any city name and instantly fetch accurate weather data.
Uses FusedLocationProviderClient to detect your GPS location and automatically show your local weather.
- ConstraintLayout
- MaterialCardView
- Dark theme look
- Clean typography
- Weather icons loaded via Glide
Professional startup animation with fade-in transition.
- Built with Retrofit2
- JSON parsing via Gson Converter
- Fully asynchronous calls
- Error handling & loading indicators
| Category | Tools |
|---|---|
| Language | Java |
| UI | XML, ConstraintLayout, Material Components |
| Networking | Retrofit2, Gson Converter |
| Images | Glide |
| Location | FusedLocationProviderClient |
| Architecture | Simple MVC / clean package structure |
| API Provider | OpenWeatherMap |
com.example.skycast
┣ data
│ ┣ model
│ │ ┣ WeatherResponse.java
│ │ ┣ MainInfo.java
│ │ ┣ WeatherInfo.java
│ │ ┣ SysInfo.java
│ │ ┗ WindInfo.java
│ ┗ remote
│ ┣ ApiClient.java
│ ┗ WeatherService.java
┣ SplashActivity.java
┗ MainActivity.java
git clone https://github.com/ME-Massine/skycast.git
cd skycastOpen the folder and let Gradle sync.
Inside MainActivity.java, replace:
private final String API_KEY = "YOUR_API_KEY_HERE";with your actual key from
https://openweathermap.org/api
Use an emulator or real device.
Make sure the device has Internet access.
GET /data/2.5/weather?q={city}&appid={API_KEY}&units=metric
GET /data/2.5/weather?lat={lat}&lon={lon}&appid={API_KEY}&units=metric
- User enters a city → Retrofit sends a GET request → JSON parsed into
WeatherResponse→ data displayed in UI. - For location weather, app requests FINE_LOCATION permission, uses
FusedLocationProviderClientto get last known location, then calls the coordinate API. - Icons are fetched dynamically from OpenWeather’s icon CDN using Glide.
- Splash screen uses a timed navigation with fade animation.
- 5-day weather forecast (RecyclerView)
- Favorite cities saved with Room database
- Light / Dark mode toggle
- Lottie animated splash
- Offline caching
- Full MVVM architecture (ViewModel + LiveData)
- Settings screen (units: Celsius / Fahrenheit)
ME-Massine
Android Developer • Java • Mobile Apps
GitHub: https://github.com/ME-Massine
This project is licensed under the MIT License.