1

Итак, у меня есть прозрачные кнопки с белыми текстовыми надписями, настроенными над пользователем, загруженным ImageView. Если пользователь загружает изображение, которое в основном белого цвета, то кнопки трудно увидеть, если они не полностью невидимы.Как изменить цвет моего текста на основе цвета изображения, который он накладывает?

Кто-нибудь знает, как получить средний цвет исходного изображения ImageView? Если я могу это сделать, я могу сравнить его с определенным порогом, который я могу испытать и ошибкой для ... Если я могу это получить, тогда я могу изменить цвет текста на моих кнопках на инвертированную версию этого цвета. .или что-то??

Просто идея плевки здесь ..

И, конечно, если кто-то знает лучше, больше информации будет оценено, спасибо !!

+1

Проверьте это: http://stackoverflow.com/questions/12408431/how-can-i-get-the-average- color-of-image – Vickyexpert

+1

* ... лучший способ ... * - вы можете использовать прозрачный фон градиента для защиты кнопок от изображения, как это описано в руководящих принципах материального дизайна https://material.google .com/style/imagery.html # image-ui-integration (текстовая защита). В качестве одного из ответов вы можете извлечь цвета с помощью библиотеки палитры, но вы по-прежнему не получаете 100% защиты, так как вы можете попасть в изображение с куском белого фона прямо под кнопками – Luksprog

+0

@Luksprog да, я думал об этом, но я подумал, что это может быть исправление temp. Добавление градиентного наложения - хорошая идея, я подумаю об этом. благодаря! – Riptyde4

ответ

1

Вы можете использовать класс Palette.

От developers guide:

Вы можете получить выдающиеся цвета из изображения, используя метод в Palette классе, такие как Palette.getVibrantColor газопоглотителя.

Palette.from() ожидает Bitmap параметров, так что вы будете иметь, чтобы получить его из ImageView. Нечто подобное должно работать:

Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap(); 

Эта фотография также может помочь подобрать подходящие цвета:

enter image description here

+0

Очень приятно, спасибо! Я посмотрю, смогу ли я получить это завтра. Я вернусь к тебе – Riptyde4

-1
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:gravity="center" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_width="110dp" 
      android:layout_height="110dp" 
      android:layout_gravity="top|center" 
      android:background="@drawable/noimage" 
      android:scaleType="fitXY" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom|center" 
      android:text="Upload image" 
      android:textColor="#fff" 
      android:background="#34000000" /> 

    </FrameLayout> 
</LinearLayout> 

Вы можете установить прозрачный цвет, чтобы увидеть кнопку. Таким образом, текст кнопки отображается, даже если изображение белого цвета. Если все в порядке, не забудьте направить ответ!

+0

Я думаю, вы неправильно поняли. Фон кнопки прозрачен, но текст кнопки отображается. Проблема в том, что текст кнопки белый, поэтому, когда изображение, на котором моя кнопка находится сверху, имеет белый фон, вы не можете видеть кнопку. Моя цель - изменить текст кнопки от белого до черного или что-то еще, когда цвет фона белый (или беловатый) – Riptyde4

+1

хорошо, тогда вы должны извлечь цвет из изображения и на основе того, что вы должны изменить цвет текста, вы можете сослаться на этот образец "https: //chris.banes.me/2014/07/04/palette-preview/"@ Ripyde4 –

0

Вы можете использовать палитру, чтобы получить цвет растрового изображения в ImageView

bitmap = BitmapFactory 
        .decodeResource(getResources(), R.drawable.header); 

      Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { 
       @Override 
       public void onGenerated(Palette palette) { 

        //Set normal shade to textview 
        int vibrantColor = palette.getVibrantColor(R.color.primary_500); 

        //Set darkershade to textview 
        int vibrantDarkColor = palette 
          .getDarkVibrantColor(R.color.primary_700); 


       } 
      }); 
+0

Да, он работает нормально, где, по вашему мнению, проблема –

+0

Nevermind, я смотрел на неправильные документы. – earthw0rmjim

 Смежные вопросы

  • Нет связанных вопросов^_^