Android studio color selector

Содержание
  1. Использование библиотеки ColorPicker в Android для реализации гибкого выбора цвета
  2. Использование селектора для изменения цвета текста TextView
  3. 1) Используйте tab_text_selector.xml, как показано ниже, и поместите его в папку res / color:
  4. 2) Второй вариант: если вы используете textview в xml вместо использования программной программы, используйте tab_text_selector.xml, как показано ниже:
  5. Tek Eye
  6. Changing Colors in Android and Naming Them for Convenience
  7. Named Color Resources in Android
  8. Referencing Colors in Android XML Layouts
  9. Accessing Android System Color Resources
  10. The Android Color Class
  11. Android Oreo Introduced ColorSpace
  12. Changing Text Color in Android
  13. Android Color Codes Example Project
  14. Adding a Color Picker to an App
  15. And Finally.
  16. Summary
  17. See Also
  18. Acknowledgements
  19. Do you have a question or comment about this article?
  20. Android Ресурсы . Работа со строками, цветами, стилями, картинками
  21. Ресурсы
  22. Ресурсы из папки res/values
  23. Файл string.xml. Локализация
  24. Доступ к ресурсам из XML
  25. Доступ к ресурсам из Java кода
  26. Зачем работать с ресурс файлами из Java кода, если можно из XML?
  27. Файл colors.xml
  28. Файл styles.xml. Стили
  29. Наследование стилей
  30. Наследование с помощью слова parent
  31. Наследование с помощью символа . (точка)
  32. Переопределение атрибутов родительского стиля
  33. Папка drawable. Работа с картинками
  34. Доступ к картинке из XML кода
  35. Доступ к картинке из Java кода
  36. Заключение

Использование библиотеки ColorPicker в Android для реализации гибкого выбора цвета

Понадобилось реализовать выбор цвета пользователем для вашего Android-приложения? Эта библиотека — отличный выбор.Без долгих предисловий, начнем.

Как всегда, для начала добавим библиотеку в приложение (файл build.gradle(module.app) ):

С этим разобрались. Теперь приступим непосредственно к реализации выбора цвета.

Создадим разметку:

У нас есть 2 кнопки, по нажатию на которые будет открываться диалоговое окно для выбора цвета. Когда мы выбрали цвет, он будет меняться у двух наших TextView.

Добавим наши поля в MainActivity:

… и инициализируем их в onCreate():

ВАЖНО: Также необходимо, чтобы MainActivity реализовывала методы интерфейса ColorPickerDialogListener:

Теперь создадим метод для создания диалогового окна и указаный в XML-разметке метод onClick:


все атрибуты класса ColorPickerDialog

Также необходимо реализовать методы интерфейса ColorPickerDialogListener:

Запускаем и… готово!

Однако это ещё не все возможности библиотеки ColorPicker. Она также добавляет preference для PreferenceScreen. Это позволяет реализовать выбор цвета в настройках. Посмотрим, как это работает.

1) Создадим новую SettingsActivity:

2) Откроем файл root_preferences.xml и изменим его следующим образом:

Как видите, мы создали Preference типа ColorPreferenceCompat

3) Создадим в activity_main.xml кнопку для перехода в нашу SettingsActivty:

4) Создадим метод openSettingsActivity в MainActivity и укажем его в поле «onClick» этой кнопки:

В этой же MainActivity создадим метод, который изменяет её фон в зависимости от выбранного в настройках цвета и вызовем этот метож в onCreate:

Переопределим метод onResume (подробнее тут):

5) Запустим приложение и посмотрим, что получилось:

Источник

Использование селектора для изменения цвета текста TextView

Я пытаюсь использовать TextView для определения стиля TabWidget на tabhost.

Я просто создал селектор для bgcolor и отлично работает, но я хочу сделать селектор для textColor, но цвет текста не изменяется:

Это мой tab_text_selector.xml:

И это код, когда я пытаюсь использовать в textView:

Я знаю, что цвет текста должен быть белым в любом случае, но это не так.

Вы должны использовать getColorStateList () . И для xml, см. Здесь

Я также боролся с этой проблемой, если вы хотите использовать state list , вам нужно объявить его в папке с color ресурсами вместо drawable папки и использовать setTextColor(getResources().getColorStateList(R.color.tab_text_selector)) .

1) Используйте tab_text_selector.xml, как показано ниже, и поместите его в папку res / color:

И установите его в текст, как показано ниже.

2) Второй вариант: если вы используете textview в xml вместо использования программной программы, используйте tab_text_selector.xml, как показано ниже:

Используйте этот способ:

Но лучше поместить цвет в /res/color/yourcolor.xml

Просто сделайте Selector для textcolor

Затем установите для свойства textColor Textview значение clickable = true

@ Ffleandro, @ ρяσѕρєя K отвечает на лучший вариант, я думаю, используя лучший выбор ColorStateList для более старых и последних версий Android.

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

Пожалуйста, используйте и протестируйте с другим цветом.

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

Источник

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).

Читайте также:  Как создавать кэш для android

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 кода. Посмотрим на синтаксис.

Видим, что он очень похож на синтаксис доступа к ресурсу из 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 разработчика. Поэтому всегда используйте их при возможности. Вы потратите чуть больше времени сейчас на их создание, зато сэкономите кучу времени при добавлении новой функциональности в приложение. Сегодня вы познакомились с простейшей локализацией, использованием стилей, цветов и увидели реальную пользу от применения ресурсов.

Источник

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