自定义View(6)paint设置图图层重叠时的显示方式,包含清空canvas
1.问题
在已有的图层上绘图将会在其上面添加一层新的图层。 如果新的图层是完全不透明的,那么它将完全遮挡住下面的图层,而setXfermode就可以来解决这个问题。这个函数设置两个图层相交时的模式 .
2.示例
Canvas canvas = new Canvas(bitmap1); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(mask, 0f, 0f, paint);
其中PorterDuffXfermode有很多样式,下面是各种样式效果图。

3.PorterDuffXfermode的各个值的含义
| PorterDuff.Mode.CLEAR | 清除画布上图像 |
| PorterDuff.Mode.SRC | 显示上层图像 |
| PorterDuff.Mode.DST | 显示下层图像 |
| PorterDuff.Mode.SRC_OVER | 上下层图像都显示,上层居上显示 |
| PorterDuff.Mode.DST_OVER | 上下层都显示,下层居上显示 |
| PorterDuff.Mode.SRC_IN | 取两层图像交集部门,只显示上层图像 |
| PorterDuff.Mode.DST_IN | 取两层图像交集部门,只显示下层图像 |
| PorterDuff.Mode.SRC_OUT | 取上层图像非交集部门 |
| PorterDuff.Mode.DST_OUT | 取下层图像非交集部门 |
| PorterDuff.Mode.SRC_ATOP | 取下层图像非交集部门与上层图像交集部门 |
| PorterDuff.Mode.DST_ATOP | 取上层图像非交集部门与下层图像交集部门 |
| PorterDuff.Mode.XOR | 取两层图像的非交集部门 |
4.清除画布内容的方法
4.1 方法1
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
4.2 方法2
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPaint(paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
自定义View(6)paint设置图图层重叠时的显示方式,包含清空canvas的更多相关文章
- 自定义View(6)paint设置两个图层相交时的显示方式,包含清空canvas
1.问题 在已有的图层上绘图将会在其上面添加一层新的图层. 如果新的图层是完全不透明的,那么它将完全遮挡住下面的图层,而setXfermode就可以来解决这个问题.这个函数设置两个图层相交时的模式 . ...
- Android 自定义View -- 简约的折线图
转载请注明出处:http://write.blog.csdn.net/postedit/50434634 接上篇 Android 圆形百分比(进度条) 自定义view 昨天分手了,不开心,来练练自定义 ...
- 自定义View(5)Paint常用的一些绘制滤镜,特效等介绍
Shader 返回绘图过程中重复色块的基类 相关方法:Paint::setShader(Shader shader) BitmapShader 从位图加载重复色块 LinearGradient, Ra ...
- Android自定义View——多边形网格属性图
1.初始化变量 2.属性图解 3.如果想切换到5.6.7边形等等,则必须修改下面几条数据 4.获取宽和高 5.绘制图形 1.开始画画前:我们要把画笔准备好,这里看代码就能明白意思了,接着把整个 ...
- android自定义View&自定义ViewGroup(上)
一般自定义view需要重写的方法 void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void onSizeChanged(int ...
- 自定义view imageviw
新建一个类继承imageview package com.exaple.myselfview; import android.content.Context; import android.graph ...
- Android自定义View学习笔记(一)
绘制基础 参考:HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础 Paint详解 参考:HenCoder Android 开发进阶: 自定义 View 1-2 Pain ...
- Android自定义View入门(一)
最近在写一个关于音乐播放的应用,写到播放界面UI时,就想自己实现的一个播放界面.那么如何实现自定义View呢?通过查看他人博客和Android官方开发文档,初步了解了一些浅显的内容.在此记录,已供需要 ...
- 简单说说Android自定义view学习推荐的方式
这几天比较受关注,挺开心的,嘿嘿. 这里给大家总结一下学习自定义view的一些技巧. 以后写自定义view可能不会写博客了,但是可以开源的我会把源码丢到github上我的地址:https://git ...
随机推荐
- 【Ibatis】总结各种使用技巧
[Ibatis]总结各种使用技巧 <alias> <typeAlias alias="YintaiMobile_FreeData_Model" type=&quo ...
- _cpluscplus
_cpluscplus是c++中的定义,而c中没有该定义 1.用来判定代码是c类型还是c++类型 2._cplusplus的类型是"long int",值为199711L int ...
- 问题 K: 【USACO2012Feb】植草 {Bronze题2}
按着矩形周长的思路,到当前边的时候,前一层的覆盖数乘以高度加入 ans 就行,然而真正的算法可能并不是这个..只能想到这个了 ; type node=record l,r,mid,sum,delta: ...
- Very large tabs in eclipse panes on Ubuntu
http://stackoverflow.com/questions/11805784/very-large-tabs-in-eclipse-panes-on-ubuntu ou can edit E ...
- IP地址格式控制
/// <summary> /// 验证IP格式是否输入正确 /// </summary> /// <param name="ip"></ ...
- 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 - BZOJ
Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...
- centos 虚拟机安装过程
centos装过好几次了,也装过好几次fedora,感觉centos更灵活些,这次我装了最简洁的centos,然后通过yum命令安装了各种需要的命令和软件,编译了phpredis.redis.和php ...
- 【BZOJ】【2819】NIM
这题……咋说捏,其实是一道披着博弈论外衣的树上操作问题…… 随便用dfs序或者树链剖分转成序列,然后查询路径上的所有点的NIM和(异或和)就行了,毕竟除了是在树上以外,就是裸的NIM问题. 树链剖分: ...
- POJ 3111
K Best Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 5177 Accepted: 1411 Case Time ...
- ubuntu下安装spark1.4.0
构建在hadoop2.6.0之上的 1.在官网下载spark-1.4.0-bin-hadoop2.6.tgz 2.解压到你想要放的文件夹里,tar zxvf spark-1.4.0-bin-hadoo ...