java setpaintmode 用法_详解Paint的各种set方法

(1) 在application配置文件中关闭硬件加速:

android:allowBackup="true"android:hardwareAccelerated="false"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

……

(2)在自定义view中调用方法来关闭:

setLayerType(LAYER_TYPE_SOFTWARE, null);

注意: 因为在配置文件中关闭会让整个应用程序无法使用硬件加速的特性,所以强烈建议用第二种方式进行关闭。

二、详细解读各种set方法

set(Paint src)

顾名思义为当前画笔设置一个画笔,说白了就是把另一个画笔的属性设置Copy给我们的画笔,不累赘了

setAlpha(int a);

设置绘制图形的透明度,设置范围是[0..255]

setAntiAlias(boolean aa)

打开抗锯齿。抗锯齿是依赖于算法的,算法决定抗锯齿的效率,在我们绘制棱角分明的图像时,比如一个矩形、一张位图,我们不需要打开抗锯齿。

setARGB(int a, int r, int g, int b)

设置绘制的颜色,a代表透明度,r,g,b代表颜色值。

setColor(int color)

设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。

setColorFilter(ColorFilter filter)

设置颜色过滤,这个方法需要我们传入一个ColorFilter参数同样也会返回一个ColorFilter实例。 如需详细了解,请参考:

setDither(boolean dither)

5092692.html

5092692.html

setElegantTextHeight(boolean elegant)

具体效果未知,个人测试后出现了没有此方法的异常,百度无果。故,暂时不推荐使用。

setFakeBoldText (boolean fakeBoldText)

设置文本仿粗体。注意设置在小字体上效果会非常差。

setFilterBitmap(boolean filter)

如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示速度,本设置项依赖于dither和xfermode的设置。

setFlags (int flags)

设置标志,还是对paint进行样式的设置。比如:

// 实例化画笔并打开抗锯齿

mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

setFontFeatureSettings(String settings)

setHinting(int mode)

setLetterSpacing(float letterSpacing)

设置行间距,默认是0.

setLinearText (boolean linearText)

设置是否打开线性文本标识,这玩意对大多数人来说都很奇怪不知道这玩意什么意思。想要明白这东西你要先知道文本在Android中是如何进行存储和计算的。在Android中文本的绘制需要使用一个bitmap作为单个字符的缓存,既然是缓存必定要使用一定的空间,我们可以通过setLinearText (true)告诉Android我们不需要这样的文本缓存。

setMaskFilter(MaskFilter maskfilter)

setMaskFilter(MaskFilter maskfilter)是paint中的方法,它可以用来对图像进行一定的处理。 如需详细了解,请参考:

setPathEffect(PathEffect effect)

设置绘制路径的效果,如点画线等 。 如需详细了解,请参考:

setRasterizer (Rasterizer rasterizer)

设置光栅,光栅这东西涉及太多太多物理知识。该方法同样不支持HW在API 21中被遗弃了,所以不推荐使用。

setShadowLayer(float radius, float dx, float dy, int shadowColor)

radius表示阴影的扩散半径;dx和dy表示阴影平面上的偏移值;shadowColor就不说了阴影颜色。

注意: 这个方法不支持硬件加速,所以我们要测试时必须先关闭硬件加速。

该方法为我们绘制的图形添加一个阴影层效果:

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

// 关闭单个view的硬件加速

setLayerType(LAYER_TYPE_SOFTWARE, null);

// 先绘制位图

mPaint.setColor(Color.RED);

// 设置阴影效果

mPaint.setShadowLayer(10, 3, 3, Color.DKGRAY);

// 画一个矩形

canvas.drawRect(200, 200, 600, 600, mPaint);

}

5092692.html

BlurMaskFilter可以模拟类似效果,跟BlurMaskFilter比起来setShadowLayer()方法是不是更简捷呢?但是BlurMaskFilter能做的setShadowLayer却不一定能做到哦!

setStrokeCap(Paint.Cap cap)

该方法用来设置我们画笔的 笔触风格 ,比如:ROUND,表示是圆角的笔触。那么什么叫笔触呢,其实很简单,就像我们现实世界中的笔,如果你用圆珠笔在纸上戳一点,那么这个点一定是个圆,即便很小,它代表了笔的笔触形状,如果我们把一支铅笔笔尖削成方形的,那么画出来的线条会是一条弯曲的“矩形”,这就是笔触的意思。除了ROUND,Paint.Cap还提供了另外两种类型:SQUARE和BUTT

setStrokeJoin(Paint.Join join)

这个方法用于设置接合处的形态,就像你用代码画了一条线,但是这条线其实是由无数条小线拼接成的,拼接处的形状就由该方法指定。可选参数是:BEVEL,MITER,ROUND。

mPaint.setStrokeJoin(Paint.Join.ROUND);

setStrokeWidth(float width);

当画笔样式(style)为STROKE或FILL_OR_STROKE时(空心样式时),设置笔刷的粗细度。

setStrokeMiter(float miter )

设置笔画的倾斜度,取值:>=0。如:小时候用的铅笔,削的时候斜与垂直削出来的笔尖效果是不一样的。主要是用来设置笔触的连接处的样式。可以和setStrokeJoin()来比较比较。

setStyle(Style style)

置画笔样式,如果不设置,默认是全部填充(FILL)。可选项为:FILL,FILL_OR_STROKE,或STROKE

画笔样式分三种:

1.Paint.Style.STROKE:描边

2.Paint.Style.FILL_AND_STROKE:描边并填充

3.Paint.Style.FILL:填充

setSubpixelText (boolean  subpixelText )

设置自像素。如果该项为true,将有助于文本在LCD屏幕上的显示效果。

setXfermode(Xfermode xfermode)

设置图像的混合模式,详细使用方式请参考:

——————————————————————————————————————

注意:下方的方法仅仅是简要的介绍,如果想要详细了解,请移步:

setStrikeThruText (boolean strikeThruText)

设置文本删除线。

setTextAlign (Paint.Align align)

设置文本的对齐方式,可供选的方式有三种:CENTER,LEFT和RIGHT。

setTextLocale (Locale locale)

设置地理位置,这里如果你要使用,直接传入Locale.getDefault()即可。它用来设置文本的区域比如中文、日文等。

setTextScaleX (float scaleX)

将文本沿X轴水平缩放,默认值为1,当值大于1会沿X轴水平放大文本,当值小于1会沿X轴水平缩放文本

setTextSize (float textSize)

设置文字的大小,但是要注意该值必需大于零。

setTextSkewX(float skewX)

设置文本在水平方向上的倾斜。这个倾斜值没有具体的范围,但是官方推崇的值为-0.25可以得到比较好的倾斜文本效果,值为负右倾值为正左倾,默认值为0。

setTypeface (Typeface typeface)

设置文本字体样式。

setUnderlineText(boolean underlineText)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

one more step_KDA新歌《MORE》的一些冷知识:伊芙琳换回原声,摩托车是定制的

原标题:KDA新歌《MORE》的一些冷知识:伊芙琳换回原声,摩托车是定制的KDA女团在2020年宣布回归后就引发了很多的关注,回归后也是推出了首支单曲《THE BADDEST》,这首歌在之后也引发了不少网友的模仿以及翻唱&#xff0c…

java jdbc连接 代码块_java 中JDBC连接数据库代码和步骤详解及实例代码

•创建一个以JDBC连接数据库的程序,包含7个步骤:1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。 例…

java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)

一、JDBC简介JDBC是连接java应用程序和数据库之间的桥梁。什么是JDBC?Java语言访问数据库的一种规范,是一套API。JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类&#xff…

java ssm 系统的搭建_SSM框架下的javaweb学生管理系统--搭建系统结构

业务需求:一个登录页面,一个学生展示页面,添加、修改、删除三个功能目的是给大家了解一个初级系统的构造,不写那么复杂的需求了。从第一步开始:创建项目打开eclipse,点击右上角的File-->New-->Dynami…

opencv 高通滤波和低通滤波_滤波电路合集(低通滤波,CLCП滤波,DLC滤波,CRC П滤波)...

常见低通滤波电路L 一阶滤波C 一阶滤波CL 二阶滤波RC 二阶滤波LC 二阶滤波RCR T型三阶滤波LCL T型三阶滤波CRC π三阶滤波CLC π三阶滤波开关电源 单级低通滤波回路DLC 型二阶滤波器开关电源 双级串联式低通滤波回路CLC П型滤波器1、工作原理介绍a.输入正脉冲时,先给C1充电,充…

matlab语音信号处理实验_现代通信综合实验系统平台

现代通信综合实验系统平台近30年来,随着我国电信行业的迅猛发展,该行业的发展水平已成为衡量一个国家实力的一大关键因子。行业的发展同时,为当代相关专业大学生创造了极大的就业市场,市场对通信类人才有着极大的需求。培养一代全面型通信类人…

iphone储存空间系统怎么清理_教你快速清理 iPhone 系统缓存垃圾,拒绝卡顿!

「 改变能改变的一切,接受不能改变的一切!」▼“iPhone存储空间”里的系统为何占用了几十G的甚至上百G的内存,如何清理?当我们使用 iPhone 一段时间之后,系统或应用中会出现一些多余的缓存数据,如果长时间不…

倒N字形排列java_Java排序8大算法实现

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复…

cross_val_score 如何对孤立森林_【收藏】森林防火手抄报素材汇总!

森林防火手抄报模板参考【文字素材参考】01森林防火根据森林火灾燃烧中央地点,蔓延速度,受害部位和程度,大致可把森林火灾分为三大类:一.地表火 二.树冠火 三.地下火。以受害森林面积大小为标准,森林火灾分为以下四类:1.森林火警:…

pb9 调用系统语音_成都电销系统一个月多少钱_选择灵狐传媒_收费透明

灵狐传媒表示:成都电销系统一个月多少钱_选择灵狐传媒_收费透明,在成都想要找一家专业的电销系统,今天小编带您看看该怎么选择吧,和研发实践,融合互联网、云计算及人工智能、通信、大数据等技术,研发推出了以人工智能为…

java thread 线程销毁_手把手带你了解Java线程的实现方式及生命周期原理

前言我们在工作中线程技术很多情况下都能用的到,而且我们在面试的时候,线程技术基本上也是必问的。今天我来从线程的实现方式以及线程的生命周期做一个全面的讲解与分析,帮助大家能更好的去了解线程技术。概念我们先来了解下线程和进程的概念…

python自动化_python自动化测试-Behave框架的用法介绍 - python测试学习

测码学院 Behave框架的用法介绍众所周知:行为驱动开发((behavior-drivendevelopment,BDD)是一种基于敏捷软件开发的方法。它可以鼓励开发人员,业务参与者和QA人员之间的协作。作为另一个Python自动化测试框架,“Behave”允许团队…

diskgeniusv4.4.0_入门TensorFlow2.0

今天老师带领我们入门TensorFlow2.0。至于tensorflow2.0是啥嘛,详细的可以度娘一下。我简述一下,就是一个end-to-end machine-Learning open source plantform(端对端的开源机器学习的平台)。学习tensorflow需要引入tensor这个概念,tensor的汉语意思就是…

php 其他页面获取session_PHP五十个提升执行效率的小技巧,和常见问题

在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centosnginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点仍然是PHPer没有…

java怎么设置404界面_如何使用Spring MVC显示自定义的404 Not Found页面

本篇文章给大家带来的内容是关于如何使用Spring MVC显示自定义的404 Not Found页面,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单…

蓝牙解码格式哪个最好_拆解报告:山灵UP2 蓝牙音频接收器

主流手机逐步取消3.5mm接口,不再内置解码芯片,习惯使用有线耳机、对音质有一定要求的朋友只能选择音频转换线或者蓝牙耳机功率放大器这类产品替代。与转换线相比,蓝牙耳机功率放大器采用蓝牙无线连接更加自由,体积一般也比较小巧。…

项目助理这个工作怎么样_分析微信清理僵尸粉这个项目怎么样?

做微信清理僵尸粉做微信清理僵尸粉做微信清理僵尸粉本人利用这个方式一年副业赚了10万01 项目介绍(为什么这个项目受欢迎)现在每个人几乎都会用到微信,但是时间长了,微信好友都是几百上千好友(5000是上限)了。但是你有没有发现,每次跟你微信沟…

java 线程安全list_JAVA并发编程实战-线程安全性

线程安全性:对象的状态是指存储在状态变量(例如实例和静态域)中的数据。对象的状态可能包括其他依赖对象的域。例如:某个HashMap的状态不仅存储在HashMap对象本身,还存储在许多Map.Entry对象中。“共享”意味变量可以由…

日文转换为罗马音_手把手教你掌握韩语40音!入门必备哦

其实学习韩语还是蛮简单的,平时看韩剧也能学会几句比较常用的话~那么接下来我们进入正题,首先你可以根据自己的韩语学习经验和全网搜集,整理出以下能够快速学习韩语40音的方法,希望能帮助到更多面对韩语40音迷茫无措的…

win7一直显示正在启动_win7系统中提高启动速度并且禁用某些软件启动的操作小技巧...

我们在启动系统时,会出现启动速度过慢,甚至达到假死机状态,就是鼠标一直在转圈圈的等待状态。出现这个问题,一般是我们电脑中自启动的软件过多造成的,解决这个问题我们只要进入系统配置工具中,对系统进行相…