Android: ¿Cuál es la clave para obtener el color de fondo de contacto?
Así que he estado leyendo sobre cómo se crea el color de fondo generado automáticamente para los contactos. Aparentemente se basa en un hashCode () de una clave en el contacto. He visto que el correo electrónico se utiliza como la clave, pero eso no tiene sentido, ya que no todos los contactos tienen correos electrónicos asociados con ellos, y los que no son todos del mismo color.
En última instancia, quiero poder conseguir el color EXACTO usado en la tarjeta del contacto. De esta forma, el icono que tengo en mi aplicación tiene el mismo color de fondo que se utilizará al hacer clic en él y abrir la tarjeta de contacto con ACTION_VIEW.
- ¿Hay una API de Android para obtener el botón predeterminado presionado / colores seleccionados?
- Cambiar el color de acento de TextInputLayout mediante programación
- Cambiar el color de texto de ListView
- Quitar el alfa de un color, pero mantener su textura
- Color androide entre dos colores, basado en el porcentaje?
Por lo tanto, sólo me preguntaba lo que necesito para usar como una clave para generar el mismo color que se genera por la aplicación de contactos de Android, para cada contacto individual? Gracias.
PD. He aquí los códigos hexadecimales que tengo ahora para el paladar de color. Si alguien podría chime en la exactitud de esto también, realmente lo apreciaría. Gracias.
<array name="letter_tile_colors"> <item>#f16364</item> <item>#f58559</item> <item>#f9a43e</item> <item>#e4c62e</item> <item>#67bf74</item> <item>#59a2be</item> <item>#2093cd</item> <item>#ad62a7</item> </array>
Edit: Algunas personas han estado diciendo que es similar a otra respuesta, Android Lollipop color de contacto
El problema con esa respuesta es que es incompleta. Explica cómo generar colores de la misma manera, pero no estoy tratando de hacer la generación aleatoria de color. Estoy buscando obtener el color EXACTO que utiliza la aplicación de contactos predeterminada para ese contacto.
- Cómo convertir un entero de color a un hex en String en Android?
- ¿Cómo recibir aleatoriamente un Material Design Color?
- Android - cambiar el color del fondo del gráfico de achartengine
- Cómo tintar un mapa de bits a un color sólido
- Color del fondo del framelayout del remoteview
- Android ShowcaseView Color del texto
- Cambiar color de android: activatedBackgroundIndicator
- Quiero crear un "modo nocturno" rojo para mi aplicación para Android
Desde el código fuente de Google ContactsCommon :
El identificador es una cadena única y determinista que se puede utilizar para identificar este contacto. Esto suele ser la clave de búsqueda del contacto, pero también se pueden utilizar otros detalles de contacto, especialmente para contactos no locales o temporales que podrían no tener una clave de búsqueda. Esto se utiliza para determinar el color de la baldosa. Desde ContactPhotoManager .
El identificador se utiliza LetterTileDrawable clase para seleccionar el color de la baldosa (el identificador proviene de la solicitud de contacto).
/** * Returns a deterministic color based on the provided contact identifier string. */ private int pickColor(final String identifier) { if (TextUtils.isEmpty(identifier) || mContactType == TYPE_VOICEMAIL) { return sDefaultColor; } // String.hashCode() implementation is not supposed to change across java versions, so // this should guarantee the same email address always maps to the same color. // The email should already have been normalized by the ContactRequest. final int color = Math.abs(identifier.hashCode()) % sColors.length(); return sColors.getColor(color, sDefaultColor); }
Las paletas se definen en el archivo colors.xml :
<!-- Background colors for LetterTileDrawables. This set of colors is a subset of https://spec.googleplex.com/quantumpalette#extended which passes Google Accessibility Requirements for the color in question on white with >= 3.0 contrast. We used http://leaverou.github.io/contrast-ratio/#white-on-%23db4437 to double-check the contrast. These colors are also used by MaterialColorMapUtils to generate primary activity colors. --> <array name="letter_tile_colors"> <item>#DB4437</item> <item>#E91E63</item> <item>#9C27B0</item> <item>#673AB7</item> <item>#3F51B5</item> <item>#4285F4</item> <item>#039BE5</item> <item>#0097A7</item> <item>#009688</item> <item>#0F9D58</item> <item>#689F38</item> <item>#EF6C00</item> <item>#FF5722</item> <item>#757575</item> </array> <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used for settings secondary activity colors. --> <array name="letter_tile_colors_dark"> <item>#C53929</item> <item>#C2185B</item> <item>#7B1FA2</item> <item>#512DA8</item> <item>#303F9F</item> <item>#3367D6</item> <item>#0277BD</item> <item>#006064</item> <item>#00796B</item> <item>#0B8043</item> <item>#33691E</item> <item>#E65100</item> <item>#E64A19</item> <item>#424242</item> </array> <!-- The default color used for tinting photos when no color can be extracted via Palette, this is Blue Grey 500 --> <color name="quickcontact_default_photo_tint_color">#607D8B</color> <!-- The default secondary color when no color can be extracted via Palette, this is Blue Grey 700 --> <color name="quickcontact_default_photo_tint_color_dark">#455A64</color> <color name="letter_tile_default_color">#cccccc</color> <color name="letter_tile_font_color">#ffffff</color>
Espero que esto pueda ayudarte
private static final int NUM_OF_TILE_COLORS = 8; private final TypedArray mColors; //initialize inside oncreate of your activity mColors = res.obtainTypedArray(R.array.letter_tile_colors);//array of colors you have //call in wherver you want, key is the name of the contact private int pickColor(String key) { // String.hashCode() is not supposed to change across java versions, so // this should guarantee the same key always maps to the same color final int color = Math.abs(key.hashCode()) % NUM_OF_TILE_COLORS; try { return mColors.getColor(color, Color.BLACK); } finally { mColors.recycle(); } }
- Composición de funciones matemáticas en LaTeX para renderizar en la aplicación Android
- Android Emulator Plugin en Jenkins – ¿Cómo extender el tiempo de espera?