很抠的—复习提纲

来源:互联网 发布:电脑网络开关设置 编辑:程序博客网 时间:2024/05/10 05:40

View 1-1 绘制基础
自定义绘制知识的四个级别
    1.Canvas 的 drawXXX()系列方法及 Paint 最常见的使用
    2. Paint 的完全攻略
    3.Canvas 对绘制的辅助——范围裁切和几何变换。
    4.使用不同的绘制方法来控制绘制顺序
Canvas.drawXXX()和Paint基础
1. Canvas 类下的所有 draw- 打头的方法
    canvas.drawColor(@ColorInt int color)颜色填充
    canvas.drawCircle(float centerX, float centerY, float radius, Paint paint)画圆
    canvas.drawRect(float left, float top, float right, float bottom, Paint paint)画矩形
    canvas.drawPoint(float x, float y, Paint paint)画点
    canvas.drawPoints(float[] pts, int offset, int count, Paint paint)  / drawPoints(float[] pts, Paint paint)画点(批量)
    canvas.drawOval(float left, float top, float right, float bottom, Paint paint)画椭圆
    canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint)画线
    canvas.drawLines(float[] pts, int offset, int count, Paint paint) / drawLines(float[] pts, Paint paint)画线(批量)
    canvas.drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint)画圆角矩形
    canvas.drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint)绘制弧形或扇形
canvas.drawPath(Path path, Paint paint)画自定义图形
Path方法第一类:直接描述路径。
    path.addCircle(float x, float y, float radius, Direction dir)添加圆
    path.addOval(float left, float top, float right, float bottom, Direction dir) /addOval(RectF oval, Direction dir)添加椭圆
    path.addRect(float left, float top, float right, float bottom, Direction dir) /addRect(RectF rect, Direction dir)添加矩形
    path.addRoundRect(RectF rect, float rx, float ry, Direction dir) /addRoundRect(float left, float top, float right, float bottom, float rx, float ry, Direction dir) /addRoundRect(RectF rect, float[] radii, Direction dir) /addRoundRect(float left, float top, float right, float bottom, float[] radii, Direction dir)添加圆角矩形
    path.lineTo(float x, float y) /rLineTo(float x, float y)画直线
    path.quadTo(float x1, float y1, float x2, float y2) /rQuadTo(float dx1, float dy1, float dx2, float dy2)画二次贝塞尔曲线
    path.cubicTo(float x1, float y1, float x2, float y2, float x3, float y3) /rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3)画三次贝塞尔曲线
    path.moveTo(float x, float y) /rMoveTo(float x, float y)移动到目标位置
    path.arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo) /arcTo(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean forceMoveTo) /arcTo(RectF oval, float startAngle, float sweepAngle)画弧形
    path.addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle) /addArc(RectF oval, float startAngle, float sweepAngle)
    path.close()封闭当前子图形
Path方法第二类:辅助的设置或计算
    path.setFillType(Path.FillType ft)设置填充方式
    path.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)画Bitmap
    path.drawText(String text, float x, float y, Paint paint)绘制文字
2. Paint 类的几个最常用的方法。具体是: 
    paint.setStyle(Style style) 设置绘制模式
    paint.setColor(int color) 设置颜色
    paint.setStrokeWidth(float width) 设置线条宽度
    paint.setTextSize(float textSize) 设置文字大小
    paint.setAntiAlias(boolean aa) 设置抗锯齿开关
View 1-2 Paint 详解
1 颜色
    1.1 基本颜色
      1.1.1 直接设置颜色
        1.1.1.1 setColor(int color)
        1.1.1.2 setARGB(int a, int r, int g, int b)
      1.1.2 setShader(Shader shader) 设置 Shader
        1.1.2.1 LinearGradient 线性渐变
        1.1.2.2 RadialGradient 辐射渐变
        1.1.2.3 SweepGradient 扫描渐变
        1.1.2.4 BitmapShader (用 Bitmap 的像素来作为图形或文字的填充)
        1.1.2.5 ComposeShader 混合着色器(就是把两个 Shader 一起使用)
    1.2 setColorFilter(ColorFilter colorFilter)
      1.2.1 LightingColorFilter
      1.2.2 PorterDuffColorFilter
      1.2.3 ColorMatrixColorFilter
    1.3 setXfermode(Xfermode xfermode)
2 效果 
    2.1 setAntiAlias (boolean aa) 设置抗锯齿
    2.2 setStyle(Paint.Style style)
    2.3 线条形状 
      2.3.1 setStrokeWidth(float width)
      2.3.2 setStrokeCap(Paint.Cap cap)(设置线头的形状: BUTT 平头、ROUND 圆头、SQUARE 方头)
      2.3.3 setStrokeJoin(Paint.Join join)(设置拐角的形状: MITER 尖角、 BEVEL 平角和 ROUND 圆角)
      2.3.4 setStrokeMiter(float miter)(miter limit 的默认值是 4)
    2.4 色彩优化 
      2.4.1 setDither(boolean dither)
      2.4.2 setFilterBitmap(boolean filter)(设置是否使用双线性过滤来绘制 Bitmap 。)
    2.5 setPathEffect(PathEffect effect)(使用 PathEffect 来给图形的轮廓设置效果)
      2.5.1 CornerPathEffect(把所有拐角变成圆角)
      2.5.2 DiscretePathEffect(把线条进行随机的偏离,让轮廓变得乱七八糟)
      2.5.3 DashPathEffect(使用虚线来绘制线条)
      2.5.4 PathDashPathEffect(使用一个 Path 来绘制「虚线」)
      2.5.5 SumPathEffect(按照两种 PathEffect 分别对目标进行绘制)
      2.5.6 ComposePathEffect
    2.6 setShadowLayer(float radius, float dx, float dy, int shadowColor)(在之后的绘制内容下面加一层阴影。)
    2.7 setMaskFilter(MaskFilter maskfilter)
      2.7.1 BlurMaskFilter(模糊效果的 MaskFilter)
      2.7.2 EmbossMaskFilter(浮雕效果的 MaskFilter)
    2.8 获取绘制的 Path
      2.8.1 getFillPath(Path src, Path dst)
      2.8.2 getTextPath(String text, int start, int end, float x, float y, Path path) / getTextPath(char[] text, int index, int count, float x, float y, Path path)
3 drawText() 相关(见1-3)
4 初始化类
    4.1 reset()(重置 Paint 的所有属性为默认值)
    4.2 set(Paint src) 
    4.3 setFlags(int flags)
View 1-3文字的绘制

Canvas绘制文字的方式
    1.1 drawText(String text, float x, float y, Paint paint)
    1.2 drawTextRun()
    1.3 drawTextOnPath()(沿着一条 Path 来绘制文字)
    1.4 StaticLayout(自动换行)
2 Paint 对文字绘制的辅助 
    2.1 设置显示效果类
        2.1.1 setTextSize(float textSize)
        2.1.2 setTypeface(Typeface typeface)(设置字体)
        2.1.3 setFakeBoldText(boolean fakeBoldText)(是否使用伪粗体)
        2.1.4 setStrikeThruText(boolean strikeThruText)(是否加删除线)
        2.1.5 setUnderlineText(boolean underlineText)
        2.1.6 setTextSkewX(float skewX)(设置文字倾斜度)
        2.1.7 setTextScaleX(float scaleX)(设置文字横向放缩。也就是文字变胖变瘦)
        2.1.8 setLetterSpacing(float letterSpacing)(设置字符间距。默认值是 0)
        2.1.9 setFontFeatureSettings(String settings)( CSS font-feature-settings 的方式来设置文字)
        2.1.10 setTextAlign(Paint.Align align)(对齐方式:LEFT CETNER  RIGHT)
        2.1.11 setTextLocale(Locale locale) / setTextLocales(LocaleList locales)(设置绘制所使用的 Locale)
        2.1.12 setHinting(int mode)(设置是否启用字体的 hinting(字体微调))
        2.1.13 setElegantTextHeight(boolean elegant)
        2.1.14 setSubpixelText(boolean subpixelText)(是否开启次像素级的抗锯齿)
        2.1.15 setLinearText(boolean linearText)
    2.2 测量文字尺寸类
        2.2.1 float getFontSpacing()(获取推荐的行距)
        2.2.2 FontMetircs getFontMetrics()(FontMetrics 是个相对专业的工具类,它提供了几个文字排印方面的数值:ascent, descent, top, bottom,leading)
        2.2.3 getTextBounds(String text, int start, int end, Rect bounds)(获取文字的显示范围)
        2.2.4 float measureText(String text)(测量文字的宽度)
        2.2.5 getTextWidths(String text, float[] widths)(获取字符串中每个字符的宽度,并把结果填入参数 widths)
        2.2.6 int breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)(给出宽度上限的前提下测量文字的宽度)
        2.2.7光标相关(API 23)
            2.2.7.1 getRunAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, int offset)
            2.2.7.2 getOffsetForAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)
        2.2.8 hasGlyph(String string)(检查指定的字符串中是否是一个单独的字形 (glyph)) 

View 1-4 Canvas对绘制的辅助
1 范围裁切 
        1.1 clipRect()
    1.2 clipPath()
2 几何变换 
    2.1 使用Canvas来做常见的二维变换: Canvas的几何变换顺序是反的
        2.1.1 Canvas.translate(float dx, float dy)平移
        2.1.2 Canvas.rotate(float degrees, float px, float py)旋转
        2.1.3 Canvas.scale(float sx, float sy, float px, float py)放缩
        2.1.4 Canvas.skew(float sx, float sy)错切
    2.2 使用Matrix来做变换
        2.2.1使用Matrix来做常见变换
            Matrix  pre/postTranslate/Rotate/Scale/Skew() 来几何变换;Canvas.concat(matrix) 来把几何变换应用到 Canvas
        2.2.2使用Matrix来做自定义变换 
            2.2.2.1 Matrix.setPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount)  用点对点映射的方式变换
    2.3 使用Camera来做三维变换:旋转、平移、移动相机。
        2.3.1 Camera.rotate*()三维旋转,一共有四个方法: rotateX(deg)  rotateY(deg)  rotateZ(deg)  rotate(x, y, z)
        2.3.2 Camera.translate(float x, float y, float z)移动,很少用到
        2.3.3 Camera.setLocation(x, y, z)设置虚拟相机的位置


 

 
 

原创粉丝点击