各位看官们,大家好,上一回中咱们说的例子是"绘制文字",这一回咱们介绍的例子是"绘图中添加阴影"。闲话休提,言归正转,让我们一起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中"绘图中添加阴影"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!