Как выделить цветом в java
В приложении Android также можно определять ресурсы цветов (Color). Они должны храниться в файле по пути res/values и также, как и ресурсы строк, заключены в тег . Так, по умолчанию при создании самого простого проекта в папку res/values добавляется файл colors.xml :
#FFBB86FC #FF6200EE #FF3700B3 #FF03DAC5 #FF018786 #FF000000 #FFFFFFFF
Цвет определяется с помощью элемента . Его атрибут name устанавливает название цвета, которое будет использоваться в приложении, а шестнадцатеричное число — значение цвета.
Для задания цветовых ресурсов можно использовать следующие форматы:
- #RGB (#F00 — 12-битное значение)
- #ARGB (#8F00 — 12-битное значение с добавлением альфа-канала)
- #RRGGBB (#FF00FF — 24-битное значение)
- #AARRGGBB (#80FF00FF — 24-битное значение с добавлением альфа-канала)
Чтобы не трогать и не портить данный файл, определим свой новый файл ресурсов и для этого добавим в папку res/values новый файл ресурсов, который назовем my_colors.xml .
Изменим файл my_colors.xml , добавив в него пару цветов:
#A0EAE1 #00695C
Применим цвета в файле activity_main.xml :
С помощью атрибута android:textColor устанавливается цвет текста в TextView, а атрибут android:background устанавливает фон TextView. В качестве значения они используют цвет, например, в том же шестнадцатеричном формате. Для получения самого цвета после «@color/» указывается имя ресурса.
Также можно использовать цветовые ресурсы в коде MainActivity:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.content.res.Resources; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); // получаем ресурсы Resources resources = getResources(); int textColor = resources.getColor(R.color.textViewFontColor, null); int backgroundColor = resources.getColor(R.color.textViewBackColor, null); ConstraintLayout constraintLayout = new ConstraintLayout(this); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; TextView textView = new TextView(this); textView.setText("Hello Android"); textView.setTextSize(32); // используем ресурсы color textView.setTextColor(textColor); textView.setBackgroundColor(backgroundColor); textView.setLayoutParams(layoutParams); constraintLayout.addView(textView); setContentView(constraintLayout); >>
Для получения цвета из ресурсов применяется метод resources.getColor() , который принимает два параметра. Первый параметр — идентификатор ресурса, цвет которого надо получить. Второй параметр представляет тему. Но поскольку в данном случае тема не важна, для этого параметра передаем значение null
Следует учитывать, что метод resources.getColor() с двумя параметрами, который использован выше, доступен, если для минимальная версия Android не ниже Android 6.0 (или Android 23). Однако минимальная версия Android ниже, то можно использовать устаревшую версию с одним параметром:
int textColor = resources.getColor(R.color.textViewFontColor); // вместо //int textColor = resources.getColor(R.color.textViewFontColor, null);
Как изменить цвет выводимого в консоль текста? [дубликат]
Мне нужно написать консольное приложение, в котором через System.out.println(«Какой-то текст»); выводится текст. Возможно ли как-то в коде задать цвет текста ?
Отслеживать
22k 3 3 золотых знака 27 27 серебряных знаков 37 37 бронзовых знаков
задан 22 дек 2016 в 15:23
Andreew Akulov Andreew Akulov
157 1 1 золотой знак 2 2 серебряных знака 10 10 бронзовых знаков
1 сен 2019 в 0:24
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Да, это возможно (но работать будет не везде):
public class Main < public static final String ANSI_RESET = "\u001B[0m"; public static final String ANSI_BLACK = "\u001B[30m"; public static final String ANSI_RED = "\u001B[31m"; public static final String ANSI_GREEN = "\u001B[32m"; public static final String ANSI_YELLOW = "\u001B[33m"; public static final String ANSI_BLUE = "\u001B[34m"; public static final String ANSI_PURPLE = "\u001B[35m"; public static final String ANSI_CYAN = "\u001B[36m"; public static final String ANSI_WHITE = "\u001B[37m"; public static void main(String[] args) < System.out.println(ANSI_RED + "This text is red!" + ANSI_RESET); >>
Отслеживать
ответ дан 22 дек 2016 в 15:30
22k 3 3 золотых знака 27 27 серебряных знаков 37 37 бронзовых знаков
- java
- io
- Важное на Мете
Связанные
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.29.1725
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как можно выводить в Java разным цветом сообщения в консоли от логгера в зависимости от типа сообщения?
Вывожу в программе логи в консоль через java.util.logging.Logger.
Выводимые строки обрабатываются этим форматером
package l2p; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; public class ConsoleLogFormatter extends Formatter < private static final String CRLF = "\r\n"; private static final SimpleDateFormat tsformat = new SimpleDateFormat("HH:mm:ss.SSS "); private Date ts = new Date(); @Override public String format(LogRecord record) < StringBuffer output = new StringBuffer(); ts.setTime(record.getMillis()); output.append(tsformat.format(ts)); output.append(record.getMessage()); output.append(CRLF); if (record.getThrown() != null) try < StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); record.getThrown().printStackTrace(pw); pw.close(); output.append(sw.toString()); output.append(CRLF); >catch (Exception ex) <> return output.toString(); > >
И собственно говоря интересует вопрос — как можно задать цвет строкам в зависимости от типа сообщения — fine, info, warning и т.д.
Притом это должно работать как в консоли Windows, так и в консоли Linux.
Может кому встречались какие-то готовые классы на эту тему или хотя бы подскажите в каком направлении копать.
- Вопрос задан более трёх лет назад
- 21498 просмотров
3 комментария
Оценить 3 комментария
Как изменить цвет текста в java
Для изменения цвета текста при выводе в консоль можно использовать управляющие коды ANSI.
Управляющие коды ANSI также позволяют изменить цвет фона, шрифт и др.
К примеру приведенный ниже код выведет в консоль текст синим цветом на желтом фоне :
public class App public static final String ANSI_RESET = "\u001B[0m"; public static final String ANSI_BLUE = "\u001B[34m"; public static final String ANSI_YELLOW_BACKGROUND = "\u001B[43m"; public static void main(String[] args) String text = "Hello World!"; System.out.println(ANSI_YELLOW_BACKGROUND + ANSI_BLUE + text + ANSI_RESET); > >