Skip to content

Repository files navigation

Material Favorite Button

Material spinning favorite/star/like button.

Android ArsenalBuild Status

Demo Image

Download

compile 'com.github.ivbaranov:materialfavoritebutton:0.1.5'

Usage

Declare in XML (see xml attributes below for customization):

<com.github.ivbaranov.mfb.MaterialFavoriteButton
android:layout_width="wrap_content"android:layout_height="wrap_content" />

Or static initializer (see xml attributes below for customization):

MaterialFavoriteButtonfavorite = newMaterialFavoriteButton.Builder(this)
.create();

Configure using xml attributes or setters in code:

app:mfb_state="false"// default button stateapp:mfb_animate_favorite="true"// to animate favoritingapp:mfb_animate_unfavorite="false"// to animate unfavoritingapp:mfb_padding="12"// image paddingapp:mfb_favorite_image="@drawable/ic_fav"// custom favorite resourceapp:mfb_not_favorite_image="@drawable/ic_not_fav"// custom not favorite resourceapp:mfb_rotation_duration="400"// rotation durationapp:mfb_rotation_angle="360"// rotation angleapp:mfb_bounce_duration="300"// bounce durationapp:mfb_color="black"// black or white default resources (enum)app:mfb_type="star"// star or heart shapes (enum)app:mfb_size="48"// button size

Make sure:

  • you are using either (mfb_favorite_image and mfb_not_favorite_image) or (mfb_color and mfb_type).
  • if you change mfb_size attribute you should also provide your own combination of mfb_favorite_image and mfb_favorite_image resources and mfb_padding attribute that will fit your new dimensions, otherwise you can get blurred icon

Set an OnFavoriteChangeListener to MaterialFavoriteButton:

favorite.setOnFavoriteChangeListener(
newMaterialFavoriteButton.OnFavoriteChangeListener() {
@OverridepublicvoidonFavoriteChanged(MaterialFavoriteButtonbuttonView, booleanfavorite) {
//
}
});

Set an OnFavoriteAnimationEndListener to MaterialFavoriteButton:

favorite.setOnFavoriteAnimationEndListener(
newMaterialFavoriteButton.OnFavoriteAnimationEndListener() {
@OverridepublicvoidonAnimationEnd(MaterialFavoriteButtonbuttonView, booleanfavorite) {
//
}
});
Usage in RecyclerView

To avoid triggering animation while re-rendering item view make sure you set favorite button state in onBindViewHolder without animation:

favoriteButton.setFavorite(isFavorite(data.get(position)));

Developed By

Ivan Baranov

License

Copyright 2015 Ivan Baranov
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
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Animated favorite/star/like button

Topics

Resources

Stars

576 stars

Watchers

18 watching

Forks

Releases

Packages

Contributors

Languages