Skip to content

Instantly share code, notes, and snippets.

@dalwadi2
Created September 26, 2018 07:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dalwadi2/554c10a917d7a0b923953fdab5062fbc to your computer and use it in GitHub Desktop.
Save dalwadi2/554c10a917d7a0b923953fdab5062fbc to your computer and use it in GitHub Desktop.
Ratingbar that can change colors on every rating.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = getViewDataBinding();
sessionSummaryVM.setNavigator(this);
setSupportActionBar(mBinding.toolbar);
mBinding.contentSessionSummary.rating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
setCurrentRating(rating);
}
});
}
private void setCurrentRating(float rating) {
LayerDrawable drawable = (LayerDrawable) mBinding.contentSessionSummary.rating.getProgressDrawable();
if (mActivity != null) {
switch (Math.round(rating)) {
case 1:
setRatingStarColor(drawable.getDrawable(2), ContextCompat.getColor(mActivity, R.color.dark_red));
break;
case 2:
setRatingStarColor(drawable.getDrawable(2), ContextCompat.getColor(mActivity, R.color.light_orange));
break;
case 3:
setRatingStarColor(drawable.getDrawable(2), ContextCompat.getColor(mActivity, R.color.light_yellow));
break;
case 4:
setRatingStarColor(drawable.getDrawable(2), ContextCompat.getColor(mActivity, R.color.light_green_review));
break;
case 5:
setRatingStarColor(drawable.getDrawable(2), ContextCompat.getColor(mActivity, R.color.dark_green));
break;
}
setRatingStarColor(drawable.getDrawable(1), ContextCompat.getColor(mActivity, R.color.transparent));
setRatingStarColor(drawable.getDrawable(0), ContextCompat.getColor(mActivity, R.color.light_grey_payment));
}
}
private void setRatingStarColor(Drawable drawable, @ColorInt int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
DrawableCompat.setTint(drawable, color);
} else {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment