Example usage for android.support.v4.graphics ColorUtils calculateContrast

List of usage examples for android.support.v4.graphics ColorUtils calculateContrast

Introduction

In this page you can find the example usage for android.support.v4.graphics ColorUtils calculateContrast.

Prototype

public static double calculateContrast(@ColorInt int foreground, @ColorInt int background) 

Source Link

Document

Returns the contrast ratio between foreground and background .

Usage

From source file:android.support.v7.app.MediaRouterThemeHelper.java

public static @ControllerColorType int getControllerColor(Context context, int style) {
    int primaryColor = getThemeColor(context, style, android.support.v7.appcompat.R.attr.colorPrimary);
    if (ColorUtils.calculateContrast(COLOR_WHITE_ON_DARK_BACKGROUND, primaryColor) >= MIN_CONTRAST) {
        return COLOR_WHITE_ON_DARK_BACKGROUND;
    }/*from ww  w  .j  av a 2 s. co  m*/
    return COLOR_DARK_ON_LIGHT_BACKGROUND;
}

From source file:android.support.v7.app.MediaRouterThemeHelper.java

public static int getButtonTextColor(Context context) {
    int primaryColor = getThemeColor(context, 0, android.support.v7.appcompat.R.attr.colorPrimary);
    int backgroundColor = getThemeColor(context, 0, android.R.attr.colorBackground);

    if (ColorUtils.calculateContrast(primaryColor, backgroundColor) < MIN_CONTRAST) {
        // Default to colorAccent if the contrast ratio is low.
        return getThemeColor(context, 0, android.support.v7.appcompat.R.attr.colorAccent);
    }/*from  w  ww .  ja va2  s .  co m*/
    return primaryColor;
}

From source file:com.android.launcher3.dynamicui.ExtractionUtils.java

/** @return Whether the foreground color is legible on the background color. */
private static boolean isLegible(int foreground, int background) {
    background = ColorUtils.setAlphaComponent(background, 255);
    return ColorUtils.calculateContrast(foreground, background) >= MIN_CONTRAST_RATIO;
}

From source file:org.voidsink.anewjkuapp.fragment.CalendarFragment2.java

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    ArrayList<WeekViewEvent> events = mWeekViewLoader.getEvents(loader.getId());
    events.clear();/*www  .j a  v a  2 s. co m*/

    Account mAccount = AppUtils.getAccount(getContext());
    if (mAccount != null) {
        // fetch calendar colors
        final SparseIntArray mColors = new SparseIntArray();
        ContentResolver cr = getContext().getContentResolver();
        Cursor cursor = cr.query(CalendarContractWrapper.Calendars.CONTENT_URI(), new String[] {
                CalendarContractWrapper.Calendars._ID(), CalendarContractWrapper.Calendars.CALENDAR_COLOR() },
                null, null, null);
        if (cursor != null) {
            while (cursor.moveToNext()) {
                int color = cursor.getInt(1);

                double lastContrast = ColorUtils.calculateContrast(color, mWeekView.getEventTextColor());
                //Log.d(TAG, String.format("color=%d %d %d, contrast=%f", Color.red(color), Color.green(color), Color.blue(color), lastContrast));

                while (lastContrast < 1.6) {
                    float[] hsv = new float[3];

                    Color.colorToHSV(color, hsv);
                    hsv[2] = Math.max(0f, hsv[2] - 0.033f); // darken
                    color = Color.HSVToColor(hsv);

                    lastContrast = ColorUtils.calculateContrast(color, mWeekView.getEventTextColor());
                    //Log.d(TAG, String.format("new color=%d %d %d, contrast=%f", Color.red(color), Color.green(color), Color.blue(color), lastContrast));

                    if (hsv[2] == 0)
                        break;
                }

                mColors.put(cursor.getInt(0), color);
            }
            cursor.close();
        }

        if (data != null) {
            data.moveToFirst();
            data.moveToPrevious();
            while (data.moveToNext()) {

                boolean allDay = data.getInt(CalendarUtils.COLUMN_EVENT_ALL_DAY) == 1;

                Calendar startTime = Calendar.getInstance();
                if (allDay) {
                    startTime.setTimeZone(TimeZone.getTimeZone("UTC"));
                }
                startTime.setTimeInMillis(data.getLong(CalendarUtils.COLUMN_EVENT_DTSTART));

                Calendar endTime = Calendar.getInstance();
                if (allDay) {
                    endTime.setTimeZone(TimeZone.getTimeZone("UTC"));
                }
                endTime.setTimeInMillis(data.getLong(CalendarUtils.COLUMN_EVENT_DTEND));
                if (allDay && endTime.getTimeInMillis() % DateUtils.DAY_IN_MILLIS == 0) {
                    endTime.add(Calendar.MILLISECOND, -1);
                }

                WeekViewEvent event = new WeekViewEvent(data.getLong(CalendarUtils.COLUMN_EVENT_ID),
                        data.getString(CalendarUtils.COLUMN_EVENT_TITLE),
                        data.getString(CalendarUtils.COLUMN_EVENT_LOCATION), startTime, endTime, allDay);

                event.setColor(mColors.get(data.getInt(CalendarUtils.COLUMN_EVENT_CAL_ID)));

                events.add(event);
            }
        }
    }

    mWeekView.notifyDatasetChanged();
}