先申明一下,这个只是自己想对paint有个整体滴认识,所以才整理出来滴,里面的链接其实都是同一个, 比较难滴地方,都是参考这个大神滴文章来进行滴。。。 看到这里,已经实现了引流,哈哈哈,你们可以去看大神滴文章了。
1.3.1
//maxWidth 表示 可接受的最大长度,返回的int表示绘制了多少个字符,measureWidth是我们自己设置进去的,他的值表示绘制的这几个字符的实际宽度.后面有代码颜色 int breakText(char[] text, int index, int count, float maxWidth, float[] measuredWidth)1.3.2
//测量文本,如果测量的宽度超过maxWidth,则提早停止。 // measureForwards 如果为true,则向前测量,从字符串中的第一个字符开始。 否则,向后测量,从字符串中的最后一个字符开始。 int breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)代码演示
paint.setTextSize(50); String str = "AABBCCDDEEFF"; float[] f= new float[1]; int width = paint.breakText(str, true, 200, f); Log.i(TAG, "WIDTH = " + width + " ---str--- = " + str.length() + "---realWidth---" + f[0]); //将结果打印出来 WIDTH = 6 ---str--- = 12---realWidth---194.01.3.3
//同上 int breakText(CharSequence text, int start, int end, boolean measureForwards, float maxWidth, float[] measuredWidth)1.4.1 getFontFeatureSettings具体指参考
//返回字体设置。 具体值参考 String getFontFeatureSettings()1.4.2 setFontFeatureSettings
void setFontFeatureSettings(String settings)1.5.1 getFontMetrics
//返回字体的推荐行间距,给出paint的字体,文字大小等的设置。 float getFontMetrics(Paint.FontMetrics metrics)1.5.2 getFontMetrics
//返回metrics对象 Paint.FontMetrics getFontMetrics()1.5.3 getFontMetricsInt
//返回字体的行间距,给出Paint的字体设置,textSize等 int getFontMetricsInt(Paint.FontMetricsInt fmi)1.7.1
//返回字体变体设置。 api26以上 (没试过) String getFontVariationSettings()1.7.2
//api26以上 不清楚有什么作用 boolean setFontVariationSettings(String fontVariationSettings)1.8.1
//返回文字间距。 float getLetterSpacing()1.8.2
//为文本设置paint的字母间距。 void setLetterSpacing(float letterSpacing)1.9.1 getOffsetForAdvance
//获取位置最接近指定水平位置的字符串中的字符偏移量。 int getOffsetForAdvance(char[] text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)1.9.2 getOffsetForAdvance
//同上 int getOffsetForAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)1.10.1
//在文本运行中测量光标位置。 float getRunAdvance(char[] text, int start, int end, int contextStart,int contextEnd, boolean isRtl, int offset)1.10.2
//同上 float getRunAdvance(CharSequence text, int start, int end,int contextStart, int contextEnd, boolean isRtl, int offset)1.11.1
//返回字体对齐方式 Paint.Align get TextAlign()1.11.2
void setTextAlign(Paint.Align align)1.12.1
//获取文本的宽高,通过bounds的Rect拿到整型。 void getTextBounds(String text, int start, int end, Rect bounds)1.12.2
//同上 void getTextBounds(char[] text, int index, int count, Rect bounds)1.13.1 getTextLocale
//获取当前文本的区域 Locale getTextLocale()1.13.2 setTextLocale
//设置文本的区域,比如中文,英文,一般用Local.getDefault(); void setTextLocale(Locale locale)1.13.3
//api 24以上 还未测试 LocaleList getTextLocales()1.13.4
//api 24以上 还未测试 void setTextLocales(LocaleList locales)1.16.1
//返回指定文本的路径(轮廓)。 void getTextPath(char[] text, int index, int count, float x, float y, Path path)1.16.2
//同上 void getTextPath(String text, int start, int end, float x, float y, Path path)代码解析
//注意要电泳path.close(); Path path = new Path(); paint.getTextPath("ABCDEFgh", 0, "ABCDEFgh".length(), 100,400, path); path.close(); paint.setStrokeWidth(5); canvas.drawPath(path, paint);1.17.1
//返回在水平方向的比例 默认是1 float getTextScaleX()1.17.2
void setTextScaleX(float scaleX)1.18.1
//Text的字体大小 float getTextSize()1.18.2
void setTextSize(float textSize)1.19.1
//获取水平偏移 float getTextSkewX()1.19.2
void setTextSkewX(float skewX)1.20.1
//返回字符串中字符的宽度。 int getTextWidths(char[] text, int index, int count, float[] widths)1.20.2
//同上 int getTextWidths(String text, float[] widths)1.20.3
//同上 int getTextWidths(String text, int start, int end, float[] widths)1.20.4
//同上 int getTextWidths(CharSequence text, int start, int end, float[] widths)代码解析
String str1 = "ABCab分机"; float[] widths = new float[str1.length()]; int num = paint.getTextWidths(str1, 0,str1.length(), widths); canvas.drawPaint(paint); for (float num1: widths){ Log.i(TAG, "WIDTH = " + num + "---realWidth---" + num1); } //log //WIDTH = 7---realWidth---8.0 //WIDTH = 7---realWidth---7.0 //WIDTH = 7---realWidth---8.0 //WIDTH = 7---realWidth---7.0 //WIDTH = 7---realWidth---7.0 //WIDTH = 7---realWidth---12.0 //WIDTH = 7---realWidth---12.01.21.1
//获取paint的字体对象。默认有四种实现 //BOLD(加粗)、BOLD_ITALIC(加粗并倾斜)、ITALIC(倾斜)、NORMAL(正常) Typeface getTypeface()1.21.2
Typeface setTypeface(Typeface typeface)1.23.1
//获取文字的宽度 float measureText(char[] text, int index, int count)1.23.2
//同上 float measureText(CharSequence text, int start, int end)1.23.3
//同上 float measureText(String text, int start, int end)1.23.4
//同上 float measureText(String text)1.24.1
//获取与设置文本是否仿粗体 final boolean isFakeBoldText()1.24.2
//获取与设置文本是否仿粗体,小字体设置效果非常差。 void setFakeBoldText(boolean fakeBoldText)1.25.1
boolean isElegantTextHeight()1.25.2
void setElegantTextHeight(boolean elegant)1.26.1
//getFlags()的帮助器,如果设置了LINEAR_TEXT_FLAG位,则返回true //直接翻译的官方文档。。。不太清楚怎么用,看到一个大神的解释是获取与设置是否打开线性文本标识。因为默认Android中文本绘制需要使用一个Bitmap作为单个字符缓存,因此会使用一定的空间,为了不使用该空间则设为true即可。 final boolean isLinearText()1.26.2
//帮助setFlags(),设置或清除LINEAR_TEXT_FLAG位 void setLinearText(boolean linearText)1.27.1
//删除线 final boolean isStrikeThruText()1.27.2
//设置是否有删除线 void setStrikeThruText(boolean strikeThruText)1.28.1
//不明白这是什么,有人说是在LCD屏幕显示有比较好的效果 final boolean isSubpixelText()1.28.2
void setSubpixelText(boolean subpixelText)1.29.1
//下划线 final boolean isUnderlineText()1.29.2
void setUnderlineText(boolean underlineText)2.1.1
int getAlpha()2.1.2
void setAlpha(int a)2.2.1
int getColor()2.2.2
void setColor(int color)2.2.3
void setARGB(int a, int r, int g, int b)2.2.4 (听说是很强大很强大很强大滴东西,不过需要ColorMatrix来支持,所以先去看看Matrix吧,这样才能更好理解,反正我是准备去看了 xiaokulian) 请跟着大神滴角步走
//获取颜色过滤器(可能为null)。 ColorFilter getColorFilter()2.2.5
//设置或清除paint的颜色过滤器,返回参数。听说很重要,等下再分析 ColorFilter setColorFilter(ColorFilter filter)2.3.1
//Return the paint's flags. int getFlags()2.3.2
void setFlags(int flags)2.4.1
//返回paint的模式。 返回HINTING_OFF或HINTING_ON。 //官方直译,不知道什么效果。。。。 int getHinting()2.4.2
void setHinting(int mode)骚年,赶紧走吧走吧,不要留着这里,这里不适合你 2.5.1
//获取paint的maskfilter对象。 MaskFilter getMaskFilter()2.5.2
//设置或清除maskfilter对象。 MaskFilter setMaskFilter(MaskFilter maskfilter)2.6.1
// 返回线的宽度 比如 画一个空心圆, 就是返回空心圆的线条宽度 float getStrokeWidth()2.6.2
void setStrokeWidth(float width)2.7.1
//设置填充的模式 Paint.Style getStyle()2.7.2
void setStyle(Paint.Style style)2.8.1
// 获取画笔的倾斜度??? float getStrokeMiter()2.8.2
// 设置画笔的倾斜度 void setStrokeMiter(float miter)文档地址 2.9.1
Xfermode getXfermode()2.9.2
Xfermode setXfermode(Xfermode xfermode)2.10.1
//是否打开抗锯齿 默认是没打开,一般情况下需要打开 final boolean isAntiAlias()2.10.2
void setAntiAlias(boolean aa)2.11.1
//获取与设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满、图像更加清晰。 final boolean isDither()2.11.2
void setDither(boolean dither)2.12.1
//位图过滤器是否被激活。 final boolean isFilterBitmap()2.12.2
void setFilterBitmap(boolean filter)这个比较重要,比如平铺,镜像翻转什么的 都可以用这个实现 具体的看这里 2.15.1
Shader getShader()2.15.2
Shader setShader(Shader shader)2.16.1
//这将在主层下面绘制一个阴影层,具有指定的偏移和颜色以及模糊半径。 void setShadowLayer(float radius, float dx, float dy, int shadowColor)2.16.2
void clearShadowLayer() // 清除阴影扩散效果2.17.1
Paint.Cap getStrokeCap()2.17.2
void setStrokeCap(Paint.Cap cap)2.18.1
//获取与设置画笔画线等连接处的轮廓样式 //三种样式 Join.MITER Join.ROUND, Join.BEVEL Paint.Join getStrokeJoin()2.18.2
void setStrokeJoin(Paint.Join join)详解看这里 2.20.1
//获取paint的patheffect对象。 PathEffect getPathEffect()2.20.2
//设置或清除patheffect对象。 PathEffect setPathEffect(PathEffect effect)3.1 ANTI_ALIAS_FLAG 抗锯齿标志 3.2 DITHER_FLAG 启用此标志会对目标的颜色空间比源更受约束的任何blit操作应用抖动。 3.3 EMBEDDED_BITMAP_TEXT_FLAG 绘制标记,可以在绘制文本时使用位图字体。 禁用此标志将阻止文本绘制操作在字体中使用嵌入式位图冲击,从而导致具有可缩放轮廓和位图冲突的字体仅绘制可缩放轮廓,并且仅使用位图冲击的字体无法绘制。 3.4 FAKE_BOLD_TEXT_FLAG 绘制标志,其对绘制文本应用合成加粗效果。 3.5 FILTER_BITMAP_FLAG 绘制标志,可在缩放位图上实现双线性采样。 3.6 HINTING_OFF 字体hinter选项禁用字体提示。 3.7 HINTING_ON 字体hinter选项启用字体提示。 3.8 LINEAR_TEXT_FLAG 绘制标志,使文本能够平滑线性缩放。 3.9 STRIKE_THRU_TEXT_FLAG绘制标志,将穿透装饰应用于绘制文本。 3.10SUBPIXEL_TEXT_FLAG启用该标志会导致以子像素精度计算字形进步。 这可以与LINEAR_TEXT_FLAG一起使用,以防止文本在平滑缩放转换期间抖动。 3.11UNDERLINE_TEXT_FLAG` 绘制标记,其将下划线装饰应用于绘制文本。