Android ApiDemos示例解析(59):Graphics->ColorFilters

简介:

Android ApiDemos示例解析(59):Graphics->ColorFilters

本例ColorFilters和下例ColorMatrix 涉及到图像处理中的很多专业术语:

Dither(图像的抖动处理,当每个颜色值以低于8位表示时,对应图像做抖动处理可以实现在可显示颜色总数比较低(比如256色)时还保持较好的显示效果: Dither on Wikipedia

20110523001.pngPorter Duff Color Filter 也可以为Alpha Composting,指当在将一幅图像绘制在已有背景图像时如果融合前景和背景颜色的过程。Porter Duffer 定义了多种模式,每种模式使用不同的前景和背景色组合算法: Alpha Composting on Wikipedia

Android中的类PorterDuffColorFilter 定义了Port Duff Color Filter, 例子使用八种不同的颜色两种模式: 其中颜色为0时,对应的colorFilter为null.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mColors = new  int [] {
  0 ,
  0xCC0000FF ,
  0x880000FF ,
  0x440000FF ,
  0xFFCCCCFF ,
  0xFF8888FF ,
  0xFF4444FF ,
};
 
mModes = new  PorterDuff.Mode[] {
  PorterDuff.Mode.SRC_ATOP,
  PorterDuff.Mode.MULTIPLY,
};

对于每个ColorFilter调用drawSample

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private  void  drawSample(Canvas canvas, ColorFilter filter) {
  Rect r = mDrawable.getBounds();
  float  x = (r.left + r.right) * 0 .5f;
  float  y = (r.top + r.bottom) * 0 .5f - mPaintTextOffset;
 
  mDrawable.setColorFilter(filter);
  mDrawable.draw(canvas);
  canvas.drawText( "Label" , x+ 1 , y+ 1 , mPaint2);
  canvas.drawText( "Label" , x, y, mPaint);
 
  for  (Drawable dr : mDrawables) {
  dr.setColorFilter(filter);
  dr.draw(canvas);
  }
}

ColorFilter的效果可以从文字“Label”来看,两行文字只偏移了一个像素,有重叠来看ColorFilter的不同效果,对应SRC_ATOP和MULTIPLY两种模式,文字有可以以白色和黑色显示:

20110523002.png感觉文字Lable在MULTIPLY模式下”Label”有点“凹下”的效果。除了SRC_ATOP和MULTIPLY之外,PorterDuff.Mode还定义定义了10多种不同模式:

porterduff.png

from  http://www.imobilebbs.com/wordpress/?p=1402

分类:  android solve


本文转自wanqi博客园博客,原文链接http://www.cnblogs.com/wanqieddy/archive/2011/07/09/2101786.html :如需转载请自行联系原作者

相关文章
|
14天前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
60 0
|
1月前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
57 1
|
2月前
|
Python
区域代理分红商城系统开发源码片段示例规则解析
level = Column(Integer, default=1) # 代理等级,例如:1代表普通用户,2代表初级代理,3代表高级代理等 parent_id = Column(Integer, ForeignKey('user.id')) # 上级代理ID 【更全面的开发源码搭建可V or TG我昵称】 parent = relationship("User", remote_side=[id]) # 上级代理对象
|
2月前
|
Python
潮玩元宇宙游戏开发基础示例规则解析
# 潮玩角色类 class ToyCharacter: def __init__(self, x, y): self.x = x self.y = y self.image = pygame.Surface([50, 50]) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.change
|
4月前
|
存储 算法 开发工具
OpenCV 安卓编程示例:1~6 全
OpenCV 安卓编程示例:1~6 全
59 0
|
14天前
|
安全 Java 定位技术
Android 浅度解析:AIDL & Binder (1)
Android 浅度解析:AIDL & Binder (1)
38 0
|
6天前
|
前端开发 测试技术 数据处理
安卓开发中的MVP架构模式深度解析
【4月更文挑战第30天】在移动应用开发领域,模型-视图-呈现器(Model-View-Presenter, MVP)是一种广泛采用的架构模式。它旨在通过解耦组件间的直接交互来提高代码的可维护性和可测试性。本文将深入探讨MVP在安卓开发中的应用,揭示其如何促进代码的模块化,提升用户界面的响应性,并简化单元测试过程。我们将从理论概念出发,逐步过渡到实践案例,为读者提供一套行之有效的MVP实施策略。
|
13天前
|
存储 物联网 数据库
Android 11 以上 SettingsProvider DatabaseHelper 解析
Android 11 以上 SettingsProvider DatabaseHelper 解析
18 0
|
13天前
|
安全 Java Shell
Android13 adb input 调试命令使用和源码解析
Android13 adb input 调试命令使用和源码解析
20 0
|
14天前
|
XML Java API
Android 浅度解析:系统框架层修改,编译,推送相关操作
Android 浅度解析:系统框架层修改,编译,推送相关操作
24 0

推荐镜像

更多