每
一个图像像素通过一个4
字节整数来展现。最高
位字节用作
alpha通道;换言之用来实现透明
/不透明控制。255
代表完全不透明;0
则代表完全透明。接下来一个字节是red
红色通道;255
代表完全是红色。依次类推接下来两个字节相应的实现绿色和蓝色通道。
现
在你可以对单独的像素进行处理了。通过使用
android
.graphics.Bitmap API
中的
getPixels,可以加载
像素到一个整数数组
中。在本文例子中,你将按照一定规则对每一个像素实现着色。经过这个处理后,所有的像素将被转化为一个范围在0
到255
的字节码。
android.graphics.Bitmap API中的
setPixels则用来加载这个整数数组到一个图像中。最后一步是通过
ImageView
变量
mIV来更新屏幕
。以下是实现这个
染色过程的代码
片段。
使用
2D 方法实现倒影特效
倒
影可以为
UI 界面
带来立体感,是一个常用的
UI 特效。下图是一个图片浏览
程序
的
GridView
,该
View 的倒影特效为
UI 界面增色不少。
实现原理
实
现倒影可以使用
OpenGL 等
3D 接口方法,也可以用
2D 的方法模拟
。
用
2D 方法实现倒影需要从两个方面考虑:
1.倒
影是上、下翻转的图像;
2.从
上到下透明度越来越大。
图像翻转的实现
原
理上讲,图像的翻转实际就是将图像数据
上下行互换。
透明度渐变
实
现透明度渐变有两种方法,一是使用蒙板;二是直接修改像素数据,修改每个
像素的
alpha
值。
对
于蒙板法,事先做好一张透明度渐变的图,这就是我们的蒙板,在绘制完图像
之后把蒙板图片绘制上去,这样就产生了透明度渐变的效果
。
对
于第二种方法,我们需要首先读出图片的数据,然后修改每个像素的
alpha 值。下面的代码片段的功能
是逐
行增加
alpha 值,产生的效果是自上向
下由暗
变亮。