package com.quickblox.sample.core.utils; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.support.annotation.ColorInt; import android.support.annotation.IntRange; import com.quickblox.sample.core.CoreApp; import com.quickblox.sample.core.R; import java.util.Random; public class UiUtils { private static final int RANDOM_COLOR_START_RANGE = 0; private static final int RANDOM_COLOR_END_RANGE = 9; private static final Random random = new Random(); private static int previousColor; private UiUtils() {} public static Drawable getGreyCircleDrawable() { return getColoredCircleDrawable(ResourceUtils.getColor(R.color.color_grey)); } public static Drawable getRandomColorCircleDrawable() { return getColoredCircleDrawable(getRandomCircleColor()); } public static Drawable getColorCircleDrawable(int colorPosition) { return getColoredCircleDrawable(getCircleColor(colorPosition % RANDOM_COLOR_END_RANGE)); } public static Drawable getColoredCircleDrawable(@ColorInt int color) { GradientDrawable drawable = (GradientDrawable) ResourceUtils.getDrawable(R.drawable.shape_circle); drawable.setColor(color); return drawable; } public static int getRandomCircleColor() { int randomNumber = random.nextInt(RANDOM_COLOR_END_RANGE) + 1; int generatedColor = getCircleColor(randomNumber); if (generatedColor != previousColor) { previousColor = generatedColor; return generatedColor; } else { do { generatedColor = getRandomCircleColor(); } while (generatedColor != previousColor); } return previousColor; } public static int getCircleColor(@IntRange(from = RANDOM_COLOR_START_RANGE, to = RANDOM_COLOR_END_RANGE) int colorPosition) { String colorIdName = String.format("random_color_%d", colorPosition + 1); int colorId = CoreApp.getInstance().getResources() .getIdentifier(colorIdName, "color", CoreApp.getInstance().getPackageName()); return ResourceUtils.getColor(colorId); } }