Android                
            Покрасить
        
        
            
    Поиск…
Вступление
Краска - это один из четырех объектов, необходимых для рисования, а также холст (содержит призывы рисования), битмап (содержит пиксели) и примитив рисования (Rect, Path, Bitmap ...)
Создание краски
Вы можете создать новую краску с одним из этих трех конструкторов:
-  
new Paint()Создать с настройками по умолчанию -  
new Paint(int flags)Создать с флагами -  
new Paint(Paint from)Параметры копирования из другой краски 
Обычно рекомендуется никогда не создавать объект рисования или любой другой объект в onDraw (), поскольку это может привести к проблемам с производительностью. (Android Studio, вероятно, предупредит вас) Вместо этого сделайте его глобальным и инициализируйте его в своем конструкторе классов следующим образом:
public class CustomView extends View {
    
    private Paint paint;
    
    public CustomView(Context context) {
        super(context);
        paint = new Paint();
        //...
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setColor(0xFF000000);
        // ...
    }
}
        Настройка Paint для текста
Настройки текстового чертежа
-  
setTypeface(Typeface typeface)Установите шрифт. См. Шрифт -  
setTextSize(int size)Установите размер шрифта в пикселях. -  
setColor(int color)Установите цвет рисования рисунка, включая цвет текста. Вы также можете использоватьsetARGB(int a, int r, int g, int bиsetAlpha(int alpha) -  
setLetterSpacing(float size)Установите расстояние между символами в ems. Значение по умолчанию равно 0, отрицательное значение будет затягивать текст, а положительный - расширяет его. -  
setTextAlign(Paint.Align align)Установите выравнивание текста относительно его начала.Paint.Align.LEFTбудет рисовать его справа от начала координат,RIGHTбудет рисовать его влево, аCENTERбудет рисовать его по центру (по горизонтали) -  
setTextSkewX(float skewX)Это можно считать поддельным курсивом. SkewX представляет горизонтальное смещение нижней части текста. (используйте -0.25 для курсива) -  
setStyle(Paint.Style style)Наполните текстFILL, Stroke текстSTROKE, или обаFILL_AND_STROKE 
 Обратите внимание, что вы можете использовать TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics()) для преобразования из SP или DP в пиксели. 
Измерительный текст
-  
float width = paint.measureText(String text)Измерьте ширину текста -  
float height = paint.ascent()Измерение высоты текста -  
paint.getTextBounds(String text, int start, int end, Rect boundsСохраняет размеры текста. Вы назначили Rect, оно не может быть null: 
 String text = "Hello world!";
 Rect bounds = new Rect();
 paint.getTextBounds(text, 0, text.length(), bounds);
 Существуют и другие методы измерения, однако эти три должны соответствовать большинству целей.
Настройка Paint для рисования фигур
-  
setStyle(Paint.Style style)Заполненная формаFILL, форма StrokeSTROKE, или обаFILL_AND_STROKE -  
setColor(int color)Установите цвет рисования рисунка. Вы также можете использоватьsetARGB(int a, int r, int g, int bиsetAlpha(int alpha) -  
setStrokeCap(Paint.Cap cap)Установите ограничения на линию, либоROUND,SQUARE, либоBUTT(нет). См. это . -  
setStrokeJoin(Paint.Join join)Установите линии, соединяющиеMITER(pointy),ROUNDилиBEVEL. Смотрите это . -  
setStrokeMiter(float miter)Установите ограничение на объединение митра. Это может препятствовать тому, чтобы объединение титров продолжалось неопределенно, превратив его в скошенное соединение после x пикселей. Смотрите это . -  
setStrokeWidth(float width)Установите ширину хода.0будет рисовать в режиме волоса, независимо от матрицы холста. (всегда 1 пиксель) 
Установка флагов
 Вы можете установить следующие флаги в конструкторе или с помощью setFlags(int flags) 
-  
Paint.ANTI_ALIAS_FLAGВключить сглаживание,Paint.ANTI_ALIAS_FLAGрисунок. -  
Paint.DITHER_FLAGВключить сглаживание. Если точность цвета выше, чем у устройства, это произойдет . -  
Paint.EMBEDDED_BITMAP_TEXT_FLAGПозволяет использовать растровые шрифты. -  
Paint.FAKE_BOLD_TEXT_FLAGбудет рисовать текст с поддельным жирным эффектом, который можно использовать вместо жирного шрифта. Некоторые шрифты имеют жирный шрифт, поддельные смелые не будут -  
Paint.FILTER_BITMAP_FLAGВлияет на выборку растровых изображений при преобразовании. -  
Paint.HINTING_OFF,Paint.HINTING_ONПереключаетPaint.HINTING_ONшрифтов, см. Это -  
Paint.LINEAR_TEXT_FLAGОтключает масштабирование шрифтов, вместо этого выполняются операции рисования -  
Paint.SUBPIXEL_TEXT_FLAGТекст будет вычисляться с использованием субпиксельной точности. -  
Paint.STRIKE_THRU_TEXT_FLAGТекст будет нарисован -  
Paint.UNDERLINE_TEXT_FLAGТекст будетPaint.UNDERLINE_TEXT_FLAG 
Вы можете добавить флаг и удалить флаги следующим образом:
Paint paint = new Paint();
paint.setFlags(paint.getFlags() | Paint.FLAG);   // Add flag
paint.setFlags(paint.getFlags() & ~Paint.FLAG);  // Remove flag
  Пытаться удалить флаг, которого нет или добавить флаг, который уже там, ничего не изменит. Также обратите внимание, что большинство флагов также можно установить с помощью set<Flag>(boolean enabled) , например setAntialias(true) . 
 Вы можете использовать paint.reset() для сброса краски по умолчанию. Единственный флаг по умолчанию - EMBEDDED_BITMAP_TEXT_FLAG . Он будет установлен, даже если вы используете new Paint(0) , у вас будет