Android中自定义常用的三个对象解析(Paint,Color,Canvas)
来源:互联网 发布:专业读书软件 编辑:程序博客网 时间:2024/06/05 08:00
Paint,Color,Canvas
Paint:画笔对象,画图用的“笔”
Color:颜色,相当于调料
Canvas:画布,现实中的纸板
Paint 画笔
常用的方法就是设置和获取到画笔的样式:
paint.setStyle(); 设置画笔的风格,空心的或者是实心的paint.setColor(); 设置画笔的颜色paint.setStrokeWidth(); 设置边框线的宽度paint.setAlpha(); 设置画笔的Alpha值paint.setAntiAlias(); 设置画笔的锯齿效果paint.setTextSize(); 设置字体的大小paint.getAlpha(); 获取到画笔的Alpha值paint.getColor(); 获取到画笔的颜色paint.getTextBounds(); 获取到最小的能包容字体的边框。。。。。。。
Color 颜色
通过Color.颜色名 ,来获取到想要的颜色。
Color里面设置了许多常用的颜色枚举值,比如:
@ColorInt public static final int BLACK = 0xFF000000; @ColorInt public static final int DKGRAY = 0xFF444444; @ColorInt public static final int GRAY = 0xFF888888; @ColorInt public static final int LTGRAY = 0xFFCCCCCC; @ColorInt public static final int WHITE = 0xFFFFFFFF; @ColorInt public static final int RED = 0xFFFF0000; @ColorInt public static final int GREEN = 0xFF00FF00; @ColorInt public static final int BLUE = 0xFF0000FF; @ColorInt public static final int YELLOW = 0xFFFFFF00; @ColorInt public static final int CYAN = 0xFF00FFFF; @ColorInt public static final int MAGENTA = 0xFFFF00FF; @ColorInt public static final int TRANSPARENT = 0;
同样,也可以自定义想要的颜色:调用Color.argb()
/** * Return a color-int from alpha, red, green, blue components. * These component values should be [0..255], but there is no * range check performed, so if they are out of range, the * returned color is undefined. * @param alpha Alpha component [0..255] of the color * @param red Red component [0..255] of the color * @param green Green component [0..255] of the color * @param blue Blue component [0..255] of the color */ @ColorInt public static int argb(int alpha, int red, int green, int blue) { return (alpha << 24) | (red << 16) | (green << 8) | blue; }
Canvas 画布,可以绘制常见的图形,比如圆,直线,矩形
绘制直线:canvas.drawLine();
/** * Draw a line segment with the specified start and stop x,y coordinates, * using the specified paint. * * <p>Note that since a line is always "framed", the Style is ignored in the paint.</p> * * <p>Degenerate lines (length is 0) will not be drawn.</p> * * @param startX The x-coordinate of the start point of the line * @param startY The y-coordinate of the start point of the line * @param paint The paint used to draw the line */ public void **drawLine**(float startX, float startY, float stopX, float stopY, @NonNull Paint paint)
绘制圆:canvas.drawCircle();
/** * Draw the specified circle using the specified paint. If radius is <= 0, * then nothing will be drawn. The circle will be filled or framed based * on the Style in the paint. * * @param cx The x-coordinate of the center of the cirle to be drawn * @param cy The y-coordinate of the center of the cirle to be drawn * @param radius The radius of the cirle to be drawn * @param paint The paint used to draw the circle */ public void **drawCircle**(float cx, float cy, float radius, @NonNull Paint paint)
绘制矩形:;canvas.drawRect();
/** * Draw the specified Rect using the specified paint. The rectangle will * be filled or framed based on the Style in the paint. * * @param left The left side of the rectangle to be drawn * @param top The top side of the rectangle to be drawn * @param right The right side of the rectangle to be drawn * @param bottom The bottom side of the rectangle to be drawn * @param paint The paint used to draw the rect */ public void **drawRect**(float left, float top, float right, float bottom, @NonNull Paint paint)
绘制图片:canvas.drawBitmap();
/** * Draw the specified bitmap, with its top/left corner at (x,y), using * the specified paint, transformed by the current matrix. * * <p>Note: if the paint contains a maskfilter that generates a mask which * extends beyond the bitmap's original width/height (e.g. BlurMaskFilter), * then the bitmap will be drawn as if it were in a Shader with CLAMP mode. * Thus the color outside of the original width/height will be the edge * color replicated. * * <p>If the bitmap and canvas have different densities, this function * will take care of automatically scaling the bitmap to draw at the * same density as the canvas. * * @param bitmap The bitmap to be drawn * @param left The position of the left side of the bitmap being drawn * @param top The position of the top side of the bitmap being drawn * @param paint The paint used to draw the bitmap (may be null) */ public void **drawBitmap**(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint) { throwIfCannotDraw(bitmap)
绘制文本:canvas.drawText();
/** * Draw the text, with origin at (x,y), using the specified paint. The * origin is interpreted based on the Align setting in the paint. * * @param text The text to be drawn * @param x The x-coordinate of the origin of the text being drawn * @param y The y-coordinate of the baseline of the text being drawn * @param paint The paint used for the text (e.g. color, size, style) */ public void **drawText**(@NonNull String text, float x, float y, @NonNull Paint paint)
绘制圆弧:canvas.drawArc();
/** * <p>Draw the specified arc, which will be scaled to fit inside the * specified oval.</p> * * <p>If the start angle is negative or >= 360, the start angle is treated * as start angle modulo 360.</p> * * <p>If the sweep angle is >= 360, then the oval is drawn * completely. Note that this differs slightly from SkPath::arcTo, which * treats the sweep angle modulo 360. If the sweep angle is negative, * the sweep angle is treated as sweep angle modulo 360</p> * * <p>The arc is drawn clockwise. An angle of 0 degrees correspond to the * geometric angle of 0 degrees (3 o'clock on a watch.)</p> * * @param oval The bounds of oval used to define the shape and size * of the arc * @param startAngle Starting angle (in degrees) where the arc begins * @param sweepAngle Sweep angle (in degrees) measured clockwise * @param useCenter If true, include the center of the oval in the arc, and close it if it is being stroked. This will draw a wedge * @param paint The paint used to draw the arc */ public void **drawArc**(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint)
。。。。。。。
小结
自定义view的时候一般会重写onDraw()方法,画图时必要的三要素:Color,paint,canvas
设置画笔的样式
设置颜色
在画布上作图
1 0
- Android中自定义常用的三个对象解析(Paint,Color,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android画图最基本的三个对象(Color,Paint,Canvas)
- Android中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)
- Android 自定义View (前置学习) -- Paint对象 Color对象 Canvas对象
- 2014-11-6Android学习------Android Paint和Color类、Canvas类的常用属性
- Android中Canvas和Paint的常用方法
- Android中Canvas和Paint的常用方法
- Android中2D绘图工具类(Canvas,Paint和Color)简介
- Android自定义View,paint+canvas的使用
- Android API解析Paint&Canvas
- spring -- aop基于xml的简单实现
- html5绘制基本图形-直线
- java实现算法之堆排序
- JSP+JavaBean与JSP+Servlet+JavaBean模型
- C++第5次上机实验—数组分离
- Android中自定义常用的三个对象解析(Paint,Color,Canvas)
- PHP动态网页脚本
- HDU 1213 How Many Tables (并查集)
- laravel(一)路由,参数传递,blade
- toolbar显示返回箭头
- android training文档目录
- Mysql 字符串 操作函数
- 设计模式——观察者模式
- 字符串方法用法