Android基础入门教程——8.3.14 Paint几个枚举-常量值以及ShadowLayer阴影效果
Android基础入门教程——8.3.14 Paint几个枚举/常量值以及ShadowLayer阴影效果
标签(空格分隔): Android基础入门教程
本节引言:
在Android基础入门教程——8.3.1 三个绘图工具类详解Paint的方法参数那里我们就接触到
了这样几个东西:Paint.Style,Paint.Cap,Paint.Join等,这些都是Paint中的一些枚举值,相关
方法我们可以通过设置这些枚举值来设置特定效果比如:Style:画笔样式,Join图形结合方式等,
本节我们走进Paint的源码,我们来一一介绍这些枚举值,另外我们也顺道讲下这个ShadowLayer
设置带阴影效果的Paint!打开Paint类的源码,我们可以看到下述这些枚举值:好了,不BB,开始本节内容!
1.get枚举用法:
不知大家对枚举陌生还是熟悉,这里把贴下Paint.Style相关的调用代码(带有参构造方法的枚举)
,让大家体会体会:
public enum Style {//定义枚举,通过括号赋值FILL (0),STROKE (1),FILL_AND_STROKE (2);//有参构造方法Style(int nativeInt) {this.nativeInt = nativeInt;}final int nativeInt;}//设置画笔Style的方法public void setStyle(Style style) {native_setStyle(mNativePaint, style.nativeInt);}//JNI设置画笔风格的方法,这里我们无需关注private static native void native_setStyle(long native_object, int style);
下面我们一一来解释这些枚举值的作用!
1.Paint.Style
作用:画笔的样式
可选值:
- FILL:填充内部(默认)
- STROKE:只描边
- FILL_AND_STROKE:填充内部与描边
方法调用:setStyle(Paint.Style style)
对应效果:
2.Paint.Cap
作用:笔触风格,设置画笔始末端的图形(画笔开始画的第一点与最后一点)
可选值:
- BUTT:笔触是长方形且不超过路径(默认)
- ROUND:笔触是圆形
- SQUARE:笔触是正方形
方法调用:setStrokeCap(Paint.Cap cap)
对应效果:平时我们直接画的是第一个,其他两个会比普通的多一点而外的区域,第二个
是圆角,第三个是矩形!
3.Paint.Join
作用:设置接合处的状态,比如你的线是由多条小线拼接而成,拼接处的形状
可选值:
- MITER:接合处为锐角(默认)
- ROUND:接合处为圆弧
- BEVEL:接合处为直线
方法调用:setStrokeJoin(Paint.Join join)
一般圆弧用得多,可参见之前的擦掉美女衣服Demo的显示
另外还有个setStrokeMiter(float miter)是设置笔画的倾斜度,miter > = 0;
如:小时候用的铅笔,削的时候斜与垂直削出来的笔尖效果是不一样的。
主要是用来设置笔触的连接处的样式。可以和setStrokeJoin()来比较比较。
4.Paint.Align
作用:设置绘制文本的对其方式,就是相对于绘制文字的[x,y]起始坐标
可选值:
- LEFT:在起始坐标的左边绘制文本
- RIGHT:在起始坐标的右边绘制文本
- CENTER:以其实坐标为中心绘制文本
方法调用:setTextAlign(Paint.Align align)
对应效果:另外可调用setTextSize()设置绘制文本的大小~
5.Paint.FontMetrics和Paint.FontMetricsInt
字体属性及测量,另外这两个方法是一样的,只是后者取到的值是一个整形,
这里我们选FontMetricsInt来给大家讲解下,有下面这五个常量值,这里参考的基准点是:
下划线的位置(Baseline)
- top:最高字符到baseline的距离,即ascent的最大值
- ascent:字符最高处的距离到baseline的值
- descent:下划线到字符最低处的距离
- bottom:下划线到最低字符的距离,即descent的最大值
- leading:上一行字符的descent到下一行的ascent之间的距离
我们看几个图帮助理解下:
然后我们随意画一串字母,把这些值打印出来:
canvas.drawText(“abcdefghijklnmopqrstuvwxyz”, 400, 400, mPaint1);
Log.e(“HEHE”, mPaint1.getFontMetricsInt().toString());
运行下,我们可以看到,打印出来的Log如下:看完思考思考,画一画,应该不难理解!这里我们知道下就好,如果你想更
深入研究,可以参考下这篇:Android字符串进阶之三:字体属性及测量(FontMetrics)
6.ShadowLayer设置阴影效果
我们在TextView那一节就教过大家为TextView的文本设置阴影效果,而Paint其实也提供了设置
阴影效果的API:setShadowLayer(float radius, float dx, float dy, int shadowColor)
参数:radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,shadowColor为阴影的颜色
我们可以写个非常简单的句子验证下:
mPaint1.setShadowLayer(5,0,0,Color.BLACK);
canvas.drawText("毕竟基神~", 400, 400, mPaint1); //绘制文字
效果如下:
另外我们还可以调用clearShadowLayer()来清除这个阴影层~
本节小结:
好的,本节给大家讲解了下Paint里面的几个枚举值以及静态常量,以及ShadowLayer为画笔
设置阴影效果或调用clearShadowLayer()清除阴影层~其实这些东西都可以自己去看源码以及
文档,有疑惑就动手写个Demo,很多东西就自然一清二楚的了,嗯,就说这么多,谢谢~
另外,可能你不知道在哪看到了我的QQ,但是可以的话尽量加群好么,平时也要上班,
一个两个还好,一堆人,有心无力,有时帮忙解决问题,结果一天什么都没做,望各位体谅,
有问题加请加小猪群,群管理都是非常热心的:421858269~
Android基础入门教程——8.3.14 Paint几个枚举-常量值以及ShadowLayer阴影效果相关推荐
- Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff详解(二) 标签(空格分隔): Android基础入门教程 本节引言: 上一节,我们学习了Xf ...
- Android基础入门教程——8.3.13 Paint API之—— Shader(图像渲染)
Android基础入门教程--8.3.13 Paint API之-- Shader(图像渲染) 标签(空格分隔): Android基础入门教程 本节引言: 最近一段时间因为工作上的事以及面试等等,耽误 ...
- 最新Android基础入门教程目录(完结版)
第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...
- 2015年最新Android基础入门教程目录(完结版)
2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全 ...
- Android基础入门教程——8.3.1 三个绘图工具类详解
Android基础入门教程--8.3.1 三个绘图工具类详解 标签(空格分隔): Android基础入门教程 本节引言: 上两小节我们学习了Drawable以及Bitmap,都是加载好图片的,而本节我 ...
- Android基础入门教程——1.1 背景相关与系统架构分析
Android基础入门教程--1.1 背景相关与系统架构分析 标签: Android基础入门教程 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Googl ...
- Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash
Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...
- android 编辑9图片,Android基础入门教程——1.6 .9(九妹)图片怎么玩
Android基础入门教程--1.6 .9(九妹)图片怎么玩 Android基础入门教程 1.本节引言: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如pic1.9.png ...
- android设置webview缓存目录,Android基础入门教程——7.5.5 WebView缓存问题
Android基础入门教程--7.5.5 WebView缓存问题 Android基础入门教程 本节引言:现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP, ...
最新文章
- VMware Horizon虚拟桌面工具箱之审计与远程协助
- 前端学习(2370):组件之间的通讯方式
- 【精心总结】java内存模型和多线程必会知识
- 使用cocopods安装Alamofire后各种报错
- 《自己动手写操作系统》读书笔记——初识保护模式
- PHP极其强大的图片处理库Grafika详细教程(4):图形绘制
- .net mysql和php mysql数据库连接_浅谈PHP连接MySQL数据库的三种方式
- zoj 2678 Bishops on a Toral Board 同余方程组,完系(3-I)
- 【路径规划】基于matlab遗传算法多车辆路径规划【含Matlab源码 704期】
- java定时器 多线程_Java多线程 定时器
- M1芯片的苹果电脑配置android开发环境
- 数学分析教程(科大)——2.4笔记+习题
- html—显示照片(方法一)
- Python3树莓派连接阿里云物联网设备发送接收数据
- Oracle使用shutdown命令后长时间无反应
- Day2--使用ESP32双核、U8G2 OLED任务、任务以绝对频率运行、任务内存优化
- 前端埋点需求(vue.js)
- 三维分析之生成DSM
- 【电路】驻极体麦克风前置放大电路
- O2O的盈利模式是怎么样的 零售O2O如何做?