- 浏览: 33697 次
- 性别:
- 来自: 北京
最新评论
在研究 Android 中幻灯片的效果的过程中,接触到了 Canvas 以及它的的 clip 方法,以下是自己研究之后,对网上的一些资料进行整合修改之后的结果,以防止自己以后忘记,如果内容当中存在一些错误,还请不吝赐教:
初次接触到 android 的 clip 有以下两点疑问:
1. Clip (剪切)的时机
2. Clip 中的 Op 的参数的意思
首先也需要明确几点:
1. Clip 是对 canvas 起作用,而非画在 canvas 上面的图片。
2. 进一步的讲, Clip 是对 clip 之后的画在 canvas 上的图像具有影响,而对 clip 之前的图像没有任何影响,当然,这是指你在 clip 之后没有在 canvas 上画任何东西
Op 参数的释义:
1. DIFFERENCE 之前剪切过除去当前要剪切的区域
2. INTERSECT 当前要剪切的区域在之前剪切过内部的部分
3. UNION 当前要剪切的区域加上之前剪切过内部的部分
4. XOR 异或,当前要剪切的区域与之前剪切过的进行异或
5. REVERSE_DIFFERENCE 与 DIFFERENCE 相反,以当前要剪切的区域为参照物,当前要剪切的区域除去之前剪切过的区域
6. REPLACE 用当前要剪切的区域代替之前剪切过的区域
7. 如果 Op 参数为空,与 INTERSECT 的效果一样,两个区域的交集
接下来,通过我自己编写的一个测试的例子以及截图进行说明:
例子:
1. 在canvas上剪切从(40,40)到(,)的方块,在下面图中为绿色区域。
2. 在canvas上剪切从(,)到(,)的方块,在下图中为蓝色半透明区域。
3. 在canvas上剪切从(40,40)到(,)的方块。
这是我自己重写的onDraw方法:
@Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.GRAY); canvas.clipRect(rectBlue, mOp); canvas.clipRect(rectGreen, mOp); canvas.clipRect(rectX, mOp); canvas.drawRect(rectGreen, mPaint1); canvas.drawRect(rectBlue, mPaint2); // 重置背景色 canvas.drawColor(Color.CYAN); }
在onDraw()执行的最后一步,我又重置了一次背景色,在下面的图示中,默认为左侧未重置背景色,右侧重置背景色。
Op参数为DIFFERENCE
画布仅保留了所有剪切区域并集之后的补集
Op参数为INTERSECT
画布仅保留了所有剪切区域的交集
Op参数为REPLACE
画布仅保留了三个剪切区域的并集
Op参数为REVERSE_DIFFERENCE
画布仅保留了第一个剪切区域在第三个剪切区域中的补集
Op参数为UNION
画布保留了全集
Op参数为XOR
画布仅保留了。。。。。。
最后一个参数的效果,如果用补集、交集之类的概念解释起来真是太麻烦了,其实,到这里,已经很明白了,在计算剪切区域的时候,应用了逻辑运算,可惜本人大脑在逻辑运算方面实在是转得很慢,只能以后补课了。
这个例子只是简单的DEMO,如果应用到程序当中还需要具体情况具体分析,呵呵~废话了这么多,希望我写的这些东西能对看到这篇文章的人有所帮助。
例子的源码在下面,需要的话,就下载吧。
- TestAndorid.zip (43.7 KB)
- 下载次数: 51
发表评论
文章已被作者锁定,不允许评论。
-
Android核心分析(21)----Android应用框架之AndroidApplication
2012-02-13 14:34 790原文地址:http://blog.csdn ... -
Android核心分析(20)----Android应用程序框架之无边界设计意图
2012-02-13 14:31 906原文地址:http://blog.csdn ... -
Android核心分析(19)----电话系统之GSMCallTacker
2012-02-13 14:25 816原文地址:http://blog.csdn ... -
Android核心分析(18)-----Android电话系统之RIL-Java
2012-02-13 14:10 1152原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(17) ------电话系统之rilD
2012-02-13 14:02 689原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(16)-----Android电话系统-概述篇
2012-01-31 14:39 914原文地址:http://blog.csdn.net/m ... -
Android核心分析(15)--------Android输入系统之输入路径详解
2012-01-31 14:22 845原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(14)------ Android GWES之输入系统
2012-01-31 10:47 961原文地址:http://blog.csdn ... -
Android 核心分析(13) -----Android GWES之Android窗口管理
2012-01-31 10:44 829原文地址:http://blog.csdn ... -
Android 核心分析(12) -----Android GEWS窗口管理之基本架构原理
2012-01-31 10:27 1046原文地址:http://blog.csdn.net/maxle ... -
Android SurfaceFlinger中的SharedClient -- 客户端(Surface)和服务端(Layer)之间的显示缓冲区管理
2012-01-11 11:00 1362原文地址:http://blog.csdn.net/Droid ... -
Android核心分析 之十一-------Android GWES之消息系统
2012-01-10 14:09 685原文地址:http://blog.csdn.net/maxle ... -
Android核心分析 之十-------Android GWES之基本原理篇
2011-12-30 15:08 742原文地址:http://blog.csdn ... -
Android核心分析 之九-------Zygote Service
2011-12-30 15:02 767原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之八------Android 启动过程详解
2011-12-30 14:56 642原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之七------Service深入分析
2011-12-30 14:48 1142原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之六 -----IPC框架分析 Binder,Service,Service manager
2011-12-30 14:41 947原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之五 -----基本空间划分
2011-12-29 11:13 662原文地址:http://blog.csdn.net/maxle ... -
Android核心分析之四 ---手机的软件形态
2011-12-29 11:09 664原文地址:http://blog.csdn.net/maxle ... -
Android是什么 之三-------手机之硬件形态
2011-12-29 11:07 647原文地址:http://blog.csdn.net/maxle ...
相关推荐
中国所有学校地理位置Json数据库(省市区地址,坐标)(分校区,大学,中学,小学等等)(Python爬虫)_hy5
【Java】基于RBAC拓展模型的,分布式、有界面、高灵活性、可拓展的权限管理系统
318 Series Hardened Access Points 370 Series Outdoor Access Points 310 Series Campus Access Points
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
在网页上爬取图片的Python爬虫_hy5
Recognizecaptchabymachinelearning.机器学习识别图片验证码(专门应付本科毕业设计)_hy4
该项目是一款基于Shell语言的DVM轻量级Deno版本管理器设计源码,包含21个文件,涵盖9个Shell脚本、6个Markdown文档、2个YAML配置文件、1个Git忽略规则文件、1个许可证文件、1个bash自动补全脚本以及1个不稳定的版本列表文件。该工具旨在为Deno开发者提供便捷的版本管理功能。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
HIT软件架构与中间件实验一消息中间件的实现_hy4
一步一步学springboot2:微服务项目实战(第二版)_hy4
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
一款基于机器学习的Web日志统计分析与异常检测命令行工具_hy4
【Jupyter Notebook】机器学习数据挖掘案例和竞赛代码
李建忠老师的C++设计模式讲义与源码,个人对设计模式的再次探究,笔记参考https:--www.yuque.com-ba_hy4
毕业设计:在线考试系统_hy4
选修课python项目_hy4
该项目是一款基于Python的医学知识图谱问答系统设计源码,包含31个文件,涵盖9个PNG图片文件、8个Python源代码文件、8个文本文件、3个Python编译文件、1个Markdown文件、1个JSON文件、1个PowerPoint演示文稿文件。该系统旨在为医疗领域提供高效的知识问答服务。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。