F32 alternatives and similar packages
Based on the "Animations" category.
Alternatively, view F32 alternatives based on common mentions on social networks and blogs.
-
Lottie for Android, iOS, and React Native
Render After Effects animations natively on Android and iOS, Web, and React Native -
UltimateAndroidReference
:rocket: Ultimate Android Reference - Your Road to Become a Better Android Developer -
ListViewAnimations
DISCONTINUED. An Android library which allows developers to easily add animations to ListView items -
NineOldAndroids
DISCONTINUED. Android library for using the Honeycomb animation API on all versions of the platform back to 1.0! -
Rebound
DISCONTINUED. A Java library that models spring dynamics and adds real world physics to your app. -
shimmer-android
DISCONTINUED. An easy, flexible way to add a shimmering effect to any view in an Android app. -
PhotoEditor
A Photo Editor library with simple, easy support for image editing using paints,text,filters,emoji and Sticker like stories. -
android-flip
DISCONTINUED. A component for flip animation on Android, which is similar to the effect in Flipboard iPhone/Android -
ChatKit for Android
Android library. Flexible components for chat UI implementation with flexible possibilities for styling, customizing and data management. Made by Stfalcon -
RecyclerViewItemAnimators
An Android library which provides simple Item animations to RecyclerView items -
ViewPagerTransforms
Library containing common animations needed for transforming ViewPager scrolling for Android v13+. -
FabulousFilter
Android library to animate Floating Action Button to Bottom Sheet Dialog and vice-versa -
ShimmerLayout
DEPRECATED - Memory efficient shimmering effect for Android applications by Supercharge. -
Rich Path Animator
DISCONTINUED. 💪 Rich Android Path. 🤡 Draw as you want. 🎉 Animate much as you can. -
Stfalcon ImageViewer
A simple and customizable Android full-screen image viewer with shared image transition support, "pinch to zoom" and "swipe to dismiss" gestures -
BaseAnimation
BaseAnimation network Android animation set, custom controls, nearly 200 kinds of source code! BaseAnimation, if a new version is updated automatically to remind everyone, I hope everyone will contribute their animated XML files or other source, together to create this open source app! -
EasyAndroidAnimations
Easy Android Animations is an animation library that aims to make android animations easier, with 50+ builtin animations, it allows you to introduce many complex animation effects in your application with one or two lines of code. -
ColorPickerView
🎨 Android colorpicker for getting colors from any images by tapping on the desired color. -
PreLollipopTransition
Simple tool which help you to implement activity and fragment transition for pre-Lollipop devices. -
EasyFlipView
💳 A quick and easy flip view through which you can create views with two sides like credit cards, poker cards etc. -
WhatTodo
A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates -
TransitionPlayer
Android library to control Transition animates. A simple way to create a interactive animation. -
Road Runner
Road Runner is a library for android which allow you to make your own loading animation using a SVG image -
Android File Picker🛩️
FilePicker is a small and fast file selector library that is constantly evolving with the goal of rapid integration, high customization, and configurability~ -
AppIntroAnimation
AppIntroAnimation is a set of code snippets to make cool intro screen for your app with special Image Translation and Transformation animation effects. It is very easy to use and customize without adding third party library integrations. -
Youtube UI/UX Animation
With MVVM Architecture pattern using Android Architecture Components This is a sample app demonstrating Youtube player animation using constraint layout -
Dachshund Tab Layout
Extended Android Tab Layout with animated indicators that have continuous feedback.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of F32 or a related project?
README
F32
At a Glance
F32
is a library for temperature conversions and weather forecasts. It includes wrapper for OpenWeatherMap API and provides developer with super-simple way to obtain weather information by geographic coordinates, city name and ZIP code.
Components included in F32
:
- OpenWeatherMap API wrapper (current weather and forecast)
- Temperature converter
- Temperature formatter
How To Get Started
Use gradle dependency: compile 'com.visuality.f32forandroid:f32:2.4'
Requirements
- Android Studio 2.3 or later
- Java 7 or later
- Android 4.0.3 or later
Usage
Preparations For Weather Requests
Before making requests for weather forecast, sign up here and get API key (if you don't already have one).
Also, don't forget to append INTERNET
permission to your application's manifest file:
<uses-permission android:name="android.permission.INTERNET"/>
Current weather
Below you can see how to make request for current weather:
/*
* Request for current weather using coordinates.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getCurrentWeatherByCoordinates(
47.2257, // latitude
38.9383, // longitude
new WeatherManager.CurrentWeatherHandler() {
@Override
public void onReceivedCurrentWeather(WeatherManager manager, Weather weather) {
// Handle current weather information
}
@Override
public void onFailedToReceiveCurrentWeather(WeatherManager manager) {
// Handle error
}
}
);
/*
* Request for current weather using city name.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getCurrentWeatherByCityName(
"New York", // city name
new WeatherManager.CurrentWeatherHandler() {
@Override
public void onReceivedCurrentWeather(WeatherManager manager, Weather weather) {
// Handle current weather information
}
@Override
public void onFailedToReceiveCurrentWeather(WeatherManager manager) {
// Handle error
}
}
);
/*
* Request for current weather using city ID.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getCurrentWeatherByCityId(
2172797, // city id
new WeatherManager.CurrentWeatherHandler() {
@Override
public void onReceivedCurrentWeather(WeatherManager manager, Weather weather) {
// Handle current weather information
}
@Override
public void onFailedToReceiveCurrentWeather(WeatherManager manager) {
// Handle error
}
}
);
/*
* Request for current weather using ZIP code.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getCurrentWeatherByZipCode(
"94040", // ZIP code
"us", // country code
new WeatherManager.CurrentWeatherHandler() {
@Override
public void onReceivedCurrentWeather(WeatherManager manager, Weather weather) {
// Handle current weather information
}
@Override
public void onFailedToReceiveCurrentWeather(WeatherManager manager) {
// Handle error
}
}
);
Weather class
Object of Weather
type can tell you a lot of information:
/*
* Location name.
*/
String locationName = weather.getNavigation().getLocationName();
/*
* Latitude of the place.
*/
double latitude = weather.getNavigation().getCoordinate().getLatitude();
/*
* Longitude of the place.
*/
double longitude = weather.getNavigation().getCoordinate().getLongitude();
/*
* Sea level.
*/
double seaLevel = weather.getNavigation().getSeaLevel();
/*
* Ground level.
*/
double groundLevel = weather.getNavigation().getGroundLevel();
/*
* Current temperature in Kelvin.
*/
double currentTemperatureInKelvin = weather.getTemperature().getCurrent()
.getValue(TemperatureUnit.KELVIN);
/*
* Current temperature in Celcius.
*/
double currentTemperatureInCelcius = weather.getTemperature().getCurrent()
.getValue(TemperatureUnit.CELCIUS);
/*
* Current temperature in Fahrenheit.
*/
double currentTemperatureInFahrenheit = weather.getTemperature().getCurrent()
.getValue(TemperatureUnit.FAHRENHEIT);
/*
* Minimum temperature in Kelvin.
*/
double minimumTemperatureInKelvin = weather.getTemperature().getMinimum()
.getValue(TemperatureUnit.KELVIN);
/*
* Minimum temperature in Celcius.
*/
double minimumTemperatureInCelcius = weather.getTemperature().getMinimum()
.getValue(TemperatureUnit.CELCIUS);
/*
* Minimum temperature in Fahrenheit.
*/
double minimumTemperatureInFahrenheit = weather.getTemperature().getMinimum()
.getValue(TemperatureUnit.FAHRENHEIT);
/*
* Maximum temperature in Kelvin.
*/
double maximumTemperatureInKelvin = weather.getTemperature().getMaximum()
.getValue(TemperatureUnit.KELVIN);
/*
* Maximum temperature in Celcius.
*/
double maximumTemperatureInCelcius = weather.getTemperature().getMaximum()
.getValue(TemperatureUnit.CELCIUS);
/*
* Maximum temperature in Fahrenheit.
*/
double maximumTemperatureInFahrenheit = weather.getTemperature().getMaximum()
.getValue(TemperatureUnit.FAHRENHEIT);
/*
* Sunrise timestamp.
*/
long sunriseTimestamp = weather.getLight().getSunriseTimestamp();
/*
* Sunset timestamp.
*/
long sunsetTimestamp = weather.getLight().getSunsetTimestamp();
/*
* Pressure in hectopascal.
*/
double pressureInHectopascal = weather.getAtmosphere().getPressure().getValue(AtmosphericPressure.Unit.HECTOPASCAL);
/*
* Pressure in millimeter of Mercury.
*/
double pressureInMillimeterOfMercury = weather.getAtmosphere().getPressure().getValue(AtmosphericPressure.Unit.MILLIMETER_OF_MERCURY);
/*
* Humidity.
*/
int humidityPercentage = weather.getAtmosphere().getHumidityPercentage();
/*
* Wind speed in meters per second.
*/
double windSpeed = weather.getWind().getSpeed();
/*
* Wind direction in degrees.
*/
double direction = weather.getWind().getDirection();
/*
* Cloudiness in percents.
*/
int cloudinessPercentage = weather.getCloudiness().getPercentage();
/*
* Rain volume for last three hours.
*/
double rainThreeHoursVolume = weather.getRain().getThreeHoursVolume();
/*
* Snow volume for last three hours.
*/
double snowThreeHoursVolume = weather.getSnow().getThreeHoursVolume();
/*
* Weather timestamp.
*/
long weatherTimestamp = weather.getWeatherTimestamp();
Forecast
Example of request for 5 day forecast:
/*
* Request for 5 day forecast using coordinates.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getFiveDayForecastByCoordinates(
47.2257, // latitude
38.9383, // longitude
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Handle forecast
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
/*
* Request for 5 day forecast using city name.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getFiveDayForecastByCityName(
"New York", // city name
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Handle forecast
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
/*
* Request for 5 day forecast using city ID.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getFiveDayForecastByCityId(
2172797, // city id
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Handle forecast
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
/*
* Request for 5 day forecast using ZIP code.
*/
new WeatherManager("INSERT_YOUR_API_KEY_HERE").getFiveDayForecastByZipCode(
"94040", // ZIP code
"us", // country code
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Handle forecast
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
If request was successful, handler returns object of Forecast
type. Forecast is a set of weathers for different timestamps. For example, forecast may include weather for today's 4 PM, today's 7 PM, tomorrow's 8 AM, etc. Below you can see example of usage:
new WeatherManager(API_KEY).getFiveDayForecastByCoordinates(
47.2257,
38.9383,
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Example of handling forecast.
int numberOfAvailableTimestamps = forecast.getNumberOfTimestamps();
for (int timestampIndex = 0; timestampIndex < numberOfAvailableTimestamps; timestampIndex++) {
long timestamp = forecast.getTimestampByIndex(timestampIndex);
Weather weatherForTimestamp = forecast.getWeatherForTimestamp(timestamp);
// Do something with weather information...
}
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
Also, you can request the most appropriate weather for random timestamp:
new WeatherManager(API_KEY).getFiveDayForecastByCoordinates(
47.2257,
38.9383,
new WeatherManager.ForecastHandler() {
@Override
public void onReceivedForecast(WeatherManager manager, Forecast forecast) {
// Example of handling forecast.
long rightNow = System.currentTimeMillis() / 1000;
long inOneHour = rightNow + TimeUnit.HOURS.toSeconds(1);
Weather weatherInOneHour = forecast.getWeatherForTimestamp(inOneHour);
long afterTwoDays = rightNow + TimeUnit.DAYS.toSeconds(2);
Weather weatherInTwoDays = forecast.getWeatherForTimestamp(afterTwoDays);
}
@Override
public void onFailedToReceiveForecast(WeatherManager manager) {
// Handle error...
}
}
);
You can simply check earliest and latest available timestamp:
long earliestAvailableTimestamp = forecast.getEarliestTimestamp();
long latestAvailableTimestamp = forecast.getLatestTimestamp();
Temperature Conversions
You can easily convert temperature from Kelvin to Celcius, from Celcius to Fahrenheit, etc. Use Temperature
class for that:
Temperature temperature = new Temperature(32, TemperatureUnit.FAHRENHEIT);
double temperatureInFahrenheit = temperature.getValue(TemperatureUnit.FAHRENHEIT); // 32.0 degrees
double temperatureInCelcius = temperature.getValue(TemperatureUnit.CELCIUS); // 0.0 degrees
double temperatureInKelvin = temperature.getValue(TemperatureUnit.KELVIN); // 273.15 degrees
Full list of supported temperature scales:
- Celcius
- Delisle
- Fahrenheit
- Kelvin
- Rankine
- Réaumur
- Rømer
Temperature Formatter
Before displaying temperature in the app, you need to convert it to string. It's recommended to use TemperatureFormatter
class for this purpose:
/*
* Format temperature with no digits after decimal point.
*/
String temperatureWithoutDecimalPoint = new TemperatureFormatter().getStringFromTemperature(
32.0,
TemperatureUnit.FAHRENHEIT
);
Log.d("TemperatureFormatter", temperatureWithoutDecimalPoint); // "32 °F"
/*
* Format temperature with digit after decimal point.
*/
String temperatureWithDecimalPoint = new TemperatureFormatter().getStringFromTemperature(
273.15,
TemperatureUnit.KELVIN
);
Log.d("TemperatureFormatter", temperatureWithDecimalPoint); // "273.15 °K"
License
F32
is available under the MIT license. See the [LICENSE](./LICENSE) file for more info.
*Note that all licence references and agreements mentioned in the F32 README section above
are relevant to that project's source code only.