一起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吧(第四百二十四回:绘图知识总结)

一起Talk Android吧(第四百四十三回:UI控件之NumberPicker)

一起Talk Android吧(第四百七十三回:使用MQTT的补充说明)