Colors code android studio

Класс android.graphics.Color

В графике важную роль играет цвет, который представлен классом Color. Класс Color содержит несколько констант и методов для конвертации и извлечения цветового компонента.

Цвета можно описывать четырьмя числами в формате ARGB, по одному для каждого канала(Alpha, Red, Green, Blue). Каждый из каналов является восьмибитным целым числом и может принимать значения от 0 до 256. Обычно цвет упаковывают в 32-битное целое число. Стоит отметить, что использовать целые числа для цветов эффективнее, чем экземпляры класса Color.

Если все значения RGB-каналов установить равными 0, то получим чёрный цвет, если присвоить значения 255, то получим белый цвет.

Иногда значения указываются не в десятичной форме, а в шестнадцатеричной от 00 до FF, вместо 0 и 255. В этом случае обычно пишут не ARGB, а AARRGGBB. Например, красный цвет в данном формате будет равен FFFF0000 (AA = FF, RR = FF, GG = 00, BB = 00).

Для создания цвета можно использовать статические константы класса Color, например:

Таких констант немного, только для основных цветов.

Получить красную, зелёную и синюю составляющую цвета можно через методы red(), green, blue(). Получить нужный цвет из набора компонентов можно через методы rgb() и argb(), которые вернут вам int-значение цвета.

Метод parseColor() позволяет получить int-значение из шестнадцатеричной формы.

Лучше задавать цвет в ресурсах для большей гибкости. Всегда можно будет поменять в случае необходимости без вмешательства в код программы:

В коде можно обратиться к цвету следующим образом:

Создадим простейший пример для просмотра цветов.

Код для активности:

Запустив проект, вы можете выбирать из выпадающего списка нужный цвет, чтобы закрасить им фон LinearLayout.

Кроме стандартной цветовой модели RGB используется также Цветовая модель HSV

Источник

Tek Eye

How does color work in Android? An Android color is a 32-bit integer value consisting of four eight bit parts (4×8=32). The four parts are tagged ARGB. This is the amount of Red, Green and Blue in the color, plus how opaque (see through) it is, called the Alpha value, the lower the alpha value the more transparent the color appears. (Note that in British English color is spelt colour.) This article shows how to set a color in Android and provides some demo code to try out.

(This Android color tutorial assumes that Android Studio is installed, a basic app can be created and run, and the code in this article can be correctly copied into Android Studio. The example code can be changed to meet your own requirements. When entering code in Studio add import statements when prompted by pressing Alt-Enter.)

Changing Colors in Android and Naming Them for Convenience

The alpha value is the highest (first) byte in the 32-bit value, followed by the red, then green and finally the blue byte. Hence it is referred to as an ARGB value with each letter representing the type and order of the byte. This format allows for easy representation as a hexadecimal number in Java. Add this code to the basic starting app at the bottom of the onCreate in the MainActivity.java (the TextView displaying Hello World! is given the ID of textView):

The three byes representing the color values provide over 16 million color possibilities in Android (256 x 256 x 256 = 16,777,216). A color depth better than the human eye (stated in the Wikipedia article). Plus all these colors can range from transparent (completely see through when alpha is 0), to opaque (completely solid when alpha is 255).

Named Color Resources in Android

To help with handling colors in Android they can be made into a resource for easy reuse. Either open an existing resource file or create a new one. In the Android Studio project there should be a colors.xml file in the res/values folder. In colors.xml add a definition for the required color, Lime is defined here as an example:

(Note: To add a new resource first select the app in the Project explorer file. Then use the File or context menu, usually right-click, then the New option and select Android resource file. A color resource does not need to be stored in colors.xml, other file names can be used.)

Use getColor() to read the color value from the resource:

If the color is solid (full alpha value) then the color resource can leave the alpha value out. Though for clarity and future maintenance it is wise to be explicit and always define all four parts of an Android color:

Читайте также:  Удаление прог с андроида

The use of a named color in a resource file is handy when dealing with common colors (such as the standard HTML named web colors, i.e. CSS colors, or X Window System and SVG color names). A resource file can be created to define the common colors for an app. Here is a resource file to use the HTML/CSS color names in Android code:

Then just use them as required:

Referencing Colors in Android XML Layouts

To reference an Android color resource in an XML layout simple use @color/name_of_color, the same way other resources are referenced, such as strings:

Accessing Android System Color Resources

Are there predefined colors in Android? Yes, there are existing color resources, but not many. Also Google does not recommend using certain system resources as they are not guaranteed to stay the same in future releases, or even be there. You can browse the Android color resources in an app project. Select Packages at the top of the Project explorer in Studio. Expand the Libraries and android, in the R.class view the items in class color. There are resources such as R.color.black and R.color.holo_purple. The full list is also available in the R.color developer documentation. To access these resources you need the package qualifier, as in @android:color/black. In code add android before the R:

Note that the Android color resources starting holo are not available on versions of Android prior to API level 14 (Ice Cream Sandwich).

The Android Color Class

There is a helper class in Android that has functions to ease the generation of color values from individual alpha, red, green and blue components, from strings and from Hue, Saturation and Value (HSV), and back again. The Color class defines a limited range of static colors, e.g. Color.YELLOW, see the Android developer documentation for full information on the Color class:

Android Color class static constants: BLACK, BLUE, CYAN, DKGRAY, GRAY, GREEN, LTGRAY, MAGENTA, RED, TRANSPARENT, WHITE, YELLOW

Color class methods: HSVToColor, RGBToHSV, alpha, argb, blue, colorToHSV, green, parseColor, red, rgb

Android Oreo Introduced ColorSpace

Android Oreo (API 26) introduce advanced color models that go beyond the previous RGB model, e.g. CMYK (the cyan, magenta, and yellow key format). For most apps the RGB colors are fine. However, for specialised applications the new models may be required. See the article Enhancing Graphics with Wide Color Content and the ColorSpace documentation on Android Developers.

For wide color support the Color class was expanded to provide 64 bit color values. Existing methods now come with support for long, and the new methods are: colorspace, convert, getColorSpace, getComponent, getComponentCount, getComponents, getMaxValue, getMinValue, getModel, isInColorSpace, isSrgb, isWideGamut, luminance, pack, toArgb

Changing Text Color in Android

Use the textColor attribute to modify the color of text when it is defined in an XML layout:

Android Color Codes Example Project

To see all the above Android color hexadecimal codes and named colors in action use the color test demo project. Here are examples of the above in action:

Download color-test.zip, extract it to a folder on your development PC and import it into Android Studio. This sample Android colors project is also available from the Tek Eye Android Example Projects page, where further details on importing a sample project into Studio is provided.

Adding a Color Picker to an App

If you need to add the ability to configure a color for a setting in an app it is easily done. The Android SeekBar can be used for a quick and easy color picker, drop four SeekBars onto a layout, one for each component of a color (only three are needed if you do not want to change the transparency). Use the methods from the Color class to combine the SeekBar outputs into the color value. Here’s one in action:

An article on building the above color picker is available in the Android Color Picker Tutorial. That tutorial also covers the color picker available in the original Android API Demos app. The API Demos project was in the pre-Androud Studio versions of the Android Software Development Kit (SDK). In API Demos the color picker is in ColorPickerDialog.java.

There are also plenty of other Android color pickers available, with full source, on GitHub, simply search for Android color picker.

And Finally.

What is the color of the Android Robot? Android green is 0xA4C639.

Summary

Storing ARGB color values in an Android resource files, e.g. #FFFF0000 , makes it easy to remember the color values for Views in Layouts. The names are easier to remember than hex strings. There is a Color helper class available to help with color conversion and value extraction. Several free color picker Views are available to add color selection functionality to apps.

See Also

  • Download the code for this example, available in color-test.zip
  • An Android Color Picker Tutorial with example source code and project.
  • See Color State List Resource for information on changing colors in Views on different states.
  • See the Android Studio example projects to learn Android app programming.
  • For a full list of all the articles in Tek Eye see the full site Index.

Acknowledgements

Author: Daniel S. Fowler Published: 2013-04-15 Updated: 2017-11-26

Do you have a question or comment about this article?

(Alternatively, use the email address at the bottom of the web page.)

Читайте также:  Как вытянуть контакты с андроида

↓markdown↓ CMS is fast and simple. Build websites quickly and publish easily. For beginner to expert.

Free Android Projects and Samples:

Источник

Android Ресурсы . Работа со строками, цветами, стилями, картинками

Ресурсы

В Android системе почти всё, что не является Java кодом, является ресурсами. Ресурсы используются для определения цветов, изображений, макетов, строковых значений и т.д. Вы можете указывать значения в файлах ресурсов, а потом ссылаться на них в Java коде вашего приложения.

Все ресурсы находятся в папке res . Посмотрим, какие по умолчанию есть папки, файлы в каталоге res .

  • drawable – хранит в себе картинки, другие графические файлы.
  • layout – хранит все макеты приложения.
  • mipmap – хранит лого приложения, которое отображается в меню приложений.
  • values – хранит в себе разные ресурсы, такие как цвета, строки, стили, размеры.

Далее нам необходимо в верхнем левом углу поменять отображение проекта с Android на Project . Это позволит нам увидеть все папки, которые реально созданы в нашем проекте. Изначально мы не делали этого, чтобы не пугать вас 🙂

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

Ресурсы из папки res/values

Нажмём на папку values , посмотрим, что в ней находится:

  • colors.xml – содержит в себе все цвета.
  • strings.xml – хранит все строковые ресурсы.
  • styles.xml – хранит стили приложения.

Хранение таких данных в отдельных ресурсах дает нам гибкость и удобство при работе с проектом. Мы рассмотрим преимущества использования ресурсов на примере локализации – поддержки нескольких языков в приложении.

Файл string.xml. Локализация

Мы будем поддерживать два языка в нашем приложении: английский и русский. Для локализации приложения используют файл strings.xml . Туда помещается весь текст приложения, который должен быть подвержен локализации. Чтобы добавить поддержку ещё одного языка, надо создать папку с именем values-language . Т.к. мы поддерживаем русский язык, то создадим папку values-ru . Для этого нажмём правой кнопкой на папку res и выберем пункт New -> Android resource directory :

  • Directory name – values-ru
  • Resource type – values
  • Source set – main

Вот как это должно выглядеть:

После этого видим, что создалась папка values-ru . Отлично, создадим новый файл strings.xml . Для этого нажимаем правой кнопкой по папке values-ru , выбираем New -> Values resource file :

Затем появится окно, в котором необходимо ввести имя файла. Вводим strings . Теперь всё, что нам надо сделать – это добавлять ресурсы в эту папку с таким же именем, но значения мы будем писать на русском языке. Система автоматически будет брать значения из этого файла, если у пользователя на устройстве установлен русский язык. Для начала давайте посмотрим как выглядит обычный строковый ресурс:

У каждого строкового ресурса есть имя, по которому в дальнейшем будет идти обращение к нему, а также его значение. На самом деле так выглядят не только строковые ресурсы, а все ресурсы приложения:

Просто вместо типа ресурса string используются другие необходимые значения ( color , dimen и т.д.). Теперь проверим, что это всё действительно работает. В файле values/strings.xml по умолчанию при создании проекта есть строка app_name :

Теперь добавим эту же строку, но на русском языке в файл values-ru/strings.xml :

Видим, что название ресурса app_name совпадает в двух папках. А вот значения мы можем указывать для каждого языка свои.

Доступ к ресурсам из XML

Теперь после создания строкового ресурса нам необходимо использовать его в layout файле. Ссылка на наш ресурс будет выглядеть так: @string/app_name . Но сейчас остановимся на минуту и разберём общий синтаксис при ссылке на файл ресурса из XML:

  • – имя пакета, в котором находится ресурс. Чаще всего его не будет, т.к. мы берём ресурсы из своего приложения. Если бы мы хотели взять строку из android библиотеки, то обращались бы @android:string .
  • – тип ресурса, к которому мы обращаемся. В данном случае – string . Обратите внимание, что название отличается от названия файла strings – используется единственное число.
  • – название ресурса.

Теперь, когда мы научились обращаться к ресурсам, давайте в файле activity_main.xml у TextView заменим текст на только что созданный строковый ресурс.

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

Давайте добавим русский язык и сделаем его основным. Для этого необходимо зайти в настройки системы и выбрать: System -> Languages & input -> Languages -> Русский. После добавления ставим русский язык первым:

Можем открыть приложение на эмуляторе или запустить его заново. Результат выглядит так:

Отображается надпись Ресурсы . Вот такое простое и элегантное решение предоставляет нам система для добавления поддержки новых языков. Стоит отметить, что помимо ручного заполнения файлов с ресурсами, существует возможность делать это через специальный редактор. Чтобы в него попасть необходимо, открыв файл со строковыми ресурсами (любого языка), в правом верхнем углу нажать кнопку «Open editor» (рус. Открыть редактор). Удобно использовать редактор, чтобы убедиться, что вы перевели все строки в приложении:

Вы можете заметить, что строка может быть нелокализируемой (поле untranslatable ). Примером могут быть технические термины, которые не переводят на другие языки: IMAP , NFC , GPS . Для таких строк в файле strings.xml необходимо установить атрибут translatable=»false» . В файлах для остальных языков не надо дублировать эти строки.

Доступ к ресурсам из Java кода

Также к ресурсам можно получить доступ из Java кода. Посмотрим на синтаксис.

Читайте также:  Сброс открытия по умолчанию android

Видим, что он очень похож на синтаксис доступа к ресурсу из XML. Параметры имя_пакета , тип_ресурса , имя_ресурса являются идентичными.

Доступ к нашему ресурсу можно получить так: R.string.app_name .

Когда приложение компилируется, автоматически генерируется класс R , который содержит идентификаторы для всех ресурсов в папке res/ . Для каждого типа ресурсов существует вложенный класс (например, R.string для всех строк), и для каждого ресурса этого типа существует целое число (например, R.string.app_name ). Из-за этого мы и можем получить доступ к ресурсу из Java кода.

Разберём на примере, как установить текстовый ресурс в TextView из Java кода:

Обратите внимание, что атрибут text мы не указали в XML файле.

Вначале мы связываем TextView из XML файла с Java кодом с помощью findViewById(R.id.text) . Потом получаем строку, используя getResources().getString(R.string.app_name) . После этого устанавливаем строку в TextView с помощью setText(appName) . Запустите приложение и убедитесь, что логика локализации не изменилась.

Зачем работать с ресурс файлами из Java кода, если можно из XML?

Бывают ситуации, когда вы заранее не можете знать, какой ресурс вы хотите использовать. Например, если в соц. сети человек уже прочитал сообщение, то вы хотите отобразить “Прочитано”, в другом случае – “Отправлено”. Именно в таких случаях необходимо работать с ресурсами из Java кода.

В Android системе лучше по умолчанию использовать строковые ресурсы даже если вы поддерживаете только один язык, чтобы в дальнейшем не было проблем с локализацией. Чтобы у вас сформировалась хорошая привычка во всех дальнейших примерах мы будем использовать именно строковые ресурсы вместо обычных строк.

Файл colors.xml

Файл colors.xml хранит в себе цвета приложения. Это удобно, потому что вы храните (изменяете при необходимости) цвет в одном месте. По умолчанию создаются цвета, которые используются в нашем приложении. Добавим ещё два цвета:

Используем эти цвета в layout файле, обращаясь к ним @color/background_light , @color/text_dark :

Теперь представьте, что дизайнер сказал вам изменить цвет текста с чёрного на тёмно синий, а фоновый цвет – с серого на тускло жёлтый. Изменяем только значения в colors.xml :

Доступ из Java кода осуществляется аналогично, как и со строковыми ресурсами. Разберём на примере:

С помощью getResources().getColor() получаем цвет, а используя setTextColor() , setBackgroundColor() устанавливаем цвета. В реальной жизни с этим часто приходится работать, когда в зависимости от статуса заказа товара в интернет-магазине изменяется фоновый цвет кнопки или контейнера.

Всегда храните все цвета приложения в файле colors.xml , чтобы легче было вносить изменения. Также это необходимо для использования нескольких тем (дневной и ночной) в приложении.

Файл styles.xml. Стили

Файл styles.xml нужен для того, чтобы объединять повторяющиеся атрибуты элементов в стили. Давайте откроем файл styles.xml :

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

Давайте на практике рассмотрим использование стилей. У нас есть такой layout , в котором у двух TextView повторяется множество атрибутов:

Мы можем вынести все эти атрибуты в новый стиль:

И после этого используем этот стиль в файле activity_main.xml , устанавливая атрибут style , передавая ему ссылку на стиль @style/Text :

Теперь, когда мы захотим поменять размер текста или изменить, добавить любой другой атрибут, то поменяем его в стиле Text . Стили позволяют избежать дублирование кода.

Наследование стилей

Наследование с помощью слова parent

Теперь давайте усложним задачу. Пусть первый текст будет тёмно синим, а второй – тёмно зелёным. Мы можем воспользоваться наследованием стилей. Создадим два новых стиля, которые будут наследовать стиль Text :

И применим эти стили в файле activity_main.xml :

Наследование с помощью символа . (точка)

Также есть возможность наследовать стили, используя символа . (точка). Изменим стили :

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

Но у такого подхода есть ограничение: мы не можем его применять когда наследуемся от каких-то Android стилей, как например стиль AppTheme . В таким случаях мы обязаны использовать ключевое слово parent :

Переопределение атрибутов родительского стиля

Аналогично с наследованием классов в Java, мы можем переопределить атрибуты родительского стиля. Для примера переопределим атрибут textSize :

Папка drawable. Работа с картинками

Чтобы добавить картинку в приложение в первую очередь необходимо скачать картинку и добавить её в папку drawable . Давайте скачаем эту картинку для примера и добавим в папку drawable :

Доступ к картинке из XML кода

Также, как и к строкам, цветам, мы можем обращаться к картинкам из XML кода. Для этого необходимо указать ссылку на картинку в layout файле, используя элемент ImageView и атрибут android:src .

Доступ к картинке из Java кода

Также мы можем отобразить картинку, используя Java код. Выглядит это так:

Вначале мы достаём из ресурсов картинку с помощью getResources().getDrawable(R.drawable.android_jetpack) . Картинка в Java коде имеет тип Drawable . Далее, вызывая метод imageView.setImageDrawable() , мы устанавливаем картинку в ImageView . Можете запустить приложение и убедиться, что результат не изменился.

В Android системе существует намного больше различных ресурсов, таких как font , dimens , arrays . На первых этапах они вам не понадобятся. Но как только возникнет необходимость, вы сможете найти нужный вам ресурс и документацию по нему на официальном сайте.

Заключение

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

Источник

Оцените статью