一起Talk Android吧(第四百二十三回:给图片添加阴影)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百二十三回:给图片添加阴影)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们,大家好,上一回中咱们说的例子是"绘图中添加发光效果",这一回咱们介绍的例子是" 给图片添加阴影"。闲话休提,言归正转,让我们一起Talk android吧!
看官们,我们在前面章回中介绍了在绘图中添加阴影的内容,不过有一个例外:图片上添加阴影后无效果。不过可以给图片添加发光效果,发光效果可以让图片在它周围产生模糊的效果,本章回中将利用发光效果来给图片添加阴影。
整体思路
利用发光效果来给图片添加阴影,首先在图片上添加发光效果,然后绘制此图片。图片周围会产生模糊的效果,类似阴影,不过这个不能准确地叫阴影,因为它在图片的四个方向上都有模糊效果。那么我们在带发光效果的图片上再覆盖一张原来的图片,只是把坐标向左和上两个方向做了偏移,这样使的带发光效果的图片位于原图的右下方,这样就出现阴影的效果。
不过与其它非图片的阴影效果相比,这种方法实现的阴影效果还是差一些。如果图片是纯色的阴影效果还可以,如果图片是混合颜色或者风景画,那么其阴影效果非常不好。既然纯色效果好,我们就在所有图片上都画一个纯色的阴影。
具体的思路:先画一个纯色的图片,具体使用什么颜色依据项目来决定,我的经验是选择原图边缘的颜色,不过图片的大小要和原图保持一致,然后画出原图,画原图时原图的坐标要和纯色图片的坐标有偏移。
具体步骤
- 1.画一个纯色的图片,图片大小和原图保持一致;
- 2.给画笔设定颜色和发光效果;
- 3.画出带发光效果的图片;
- 4.画出原图,注意给原图的坐标做偏移;
这个过程中最关键的步骤是第一步,这里利用了extractAlpha
()方法来获取一个和原图大小一样同时只包含透明度的图片,此图片中只有透明度,画这种图片时图片的颜色与画笔的颜色相同,指定画笔的颜色就间接地指定了图片的颜色。
示例代码
private void drawShadow4Image(Canvas canvas)
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.img1);
//获取和原图大小保持一致只包含透明度的图片;
Bitmap alphaBitmap = bitmap.extractAlpha();
mTextPaint.setColor(Color.GREEN);
mTextPaint.setMaskFilter(new BlurMaskFilter(20, BlurMaskFilter.Blur.NORMAL));
//直接画带有发光效果的原图,阴影效果不太好
// canvas.drawBitmap(bitmap,220,820,mTextPaint);
//画带有发光效果的纯色图片,阴影效果好
canvas.drawBitmap(alphaBitmap,210,810,mTextPaint);
mTextPaint.setMaskFilter(null);
canvas.drawBitmap(bitmap,200,800,mTextPaint);
上面的代码中我们使用绿色来画图片的阴影,是因为图片边缘是绿色。此外,代码中的坐标是写死的,大家可以自己灵活控制。
还一个地方需要注意:画完纯色发光效果的图片后需要清除画笔中的发光效果,或者说使用另外一种画笔画原图,不然使用相同画笔画原图时,原图中会带上发光效果。
我在这里就不演示程序的运行效果了,建议大家自己动手去实践。
看官们,关于Android中"给图片添加阴影"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百二十三回:给图片添加阴影)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百二十一回:绘图中添加阴影)
一起Talk Android吧(第四百六十三回:自定义属性)
一起Talk Android吧(第四百九十三回:动画知识总结)
一起Talk Android吧(第四百二十四回:绘图知识总结)