Как изменить оттенок плавающей прорисовки в зависимости от цвета фона? - PullRequest
0 голосов
/ 13 января 2019

У меня есть приложение для Android, в котором пользователь может (де) выбрать изображение. Изображения отображаются в ViewPager, вложенном в FrameLayout.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    .. ViewPager stuff ..
    <CheckBox
        android:id="@+id/selectImageCheckbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="32dp"
        android:alpha="0.9"
        android:button="@drawable/ic_checkbox_36dp"
        android:textColor="@color/colorLightGray" />
</FrameLayout>

Флажок расположен справа внизу. Моя проблема в том, что я хотел бы изменить оттенок отрисовываемого флажка в зависимости от фона позади флажка. Если это изображение темного цвета, белый оттенок прекрасно работает. Если изображение очень яркое или, возможно, просто недостаточно широкое, чтобы достичь флажка, тогда белый цвет не работает, а серый лучше.

Я изо всех сил пытаюсь найти способ определить видимый цвет в прямоугольнике, чтобы флажок был установлен. (Я знаю как программно изменить оттенок). Или есть более элегантное решение для изменения растягиваемого оттенка в зависимости от цвета окружающей среды?

1 Ответ

0 голосов
/ 13 января 2019

Сначала проверьте размеры изображения и определите, попадает ли оно в флажок.

Если нет, то Грей.

Если это так, то можно было бы взять широкую часть нижней половины изображения и определить ее общую яркость пикселей.

С этим значением можно определить, какой цвет лучше всего выделяется на изображении.

...