Material spinning favorite/star/like button.
compile 'com.github.ivbaranov:materialfavoritebutton:0.1.5'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 sizeMake sure:
- you are using either (
mfb_favorite_imageandmfb_not_favorite_image) or (mfb_colorandmfb_type). - if you change
mfb_sizeattribute you should also provide your own combination ofmfb_favorite_imageandmfb_favorite_imageresources andmfb_paddingattribute 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) {
//
}
});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)));Ivan Baranov
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.
