一起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中"给图片添加阴影"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值