一起Talk Android吧(第四百二十一回:绘图中添加阴影)

Posted talk_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百二十一回:绘图中添加阴影)相关的知识,希望对你有一定的参考价值。

文章目录

各位看官们,大家好,上一回中咱们说的例子是"绘制文字",这一回咱们介绍的例子是"绘图中添加阴影"。闲话休提,言归正转,让我们一起Talk android吧!

使用背景

在项目中有些场景需要给图形添加阴影效果,最开始想到的是给原图的坐标移位,手动制造出阴影效果,不过实际操作起来比较繁杂,毕竟相同的事情做两次还是比较烦人的,而且还要对原图的坐标进行计算和修改,于是想看看Android是不是有可用的方法呢,功夫不负有心人,还真有这样的方法。

添加方法

添加阴影的方法有两种,一种是通过代码来添加,另外一个是在xml文件中通过控件的属性来添加。接下来我们分别介绍这两种添加阴影的方法。

通过画笔添加

添加阴影可以通过画笔实现,画笔用Paint类表示,该类提供了相关的方法来添加阴影,方法的原型如下:

public void setShadowLayer(float radius, float dx, float dy, int shadowColor) 
public void clearShadowLayer() 

set方法用来添加阴影,clear方法用来删除阴影,方法的参数radius表示模糊半径,因为此方法使用了高斯模糊算法,半径的值越大,模糊度越大,反之越清楚,值为0时没有模糊效果。第二、三个参数表示阴影在x和y方向的偏移距离。最后一个参数是阴影的颜色。

注意:如果被模糊对象是图片(Bitmap)时阴影中的颜色对图片不起作用,此时会显示一个图片和图片的副本,不过偏移距离还是起作的。

通过属性添加

对于TextView和它的子类来说除了可以使用上面的方法添加阴影外,还可以使用xml来配置阴影属性,详细如下:

android:shadowRadius="4"
android:shadowColor="@color/cus_blue"
android:shadowDx="30"
android:shadowDy="20"

从这些属性的名称就能看出来它们的作用,其实它们和方法中的参数都是一一对应的,因此我就不再介绍这些属性的用法了。

注意:只有TextView和它的子类才有这些属性。

示例代码

private void drawShadow(Canvas canvas) 
    mTextPaint.setTextSize(33);
    mTextPaint.setColor(Color.WHITE);
    mTextPaint.setShadowLayer(10,20,20,Color.YELLOW);
    canvas.drawText("hello",200,400,mTextPaint);

    canvas.drawRect(200,600,800,700,mTextPaint);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.img1);

    canvas.drawBitmap(bitmap,200,800,mTextPaint);

在上面的代码中,我们给画笔添加了阴影,然后使用此画笔绘制文字,矩形和图片。文字和矩形可以显示出阴影效果,图片则没有,它只显示一个图片的副本。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

看官们,关于Android中"绘图中添加阴影"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

以上是关于一起Talk Android吧(第四百二十一回:绘图中添加阴影)的主要内容,如果未能解决你的问题,请参考以下文章

一起Talk Android吧(第四百二十回:贝塞尔曲线)

一起Talk Android吧(第四百二十三回:给图片添加阴影)

一起Talk Android吧(第四百二十六回:修改BLE中的MTU)

一起Talk Android吧(第四百二十二回:绘图中添加发光效果)

一起Talk Android吧(第四百二十五回:字节数组与String相互转换)

一起Talk Android吧(第四百二十八回:在Android中使用MQTT通信二)