android画出图片阴影

void drawAt(Canvas canvas, Drawable drawable, int x, int y, boolean shadow)这个函数是Overlay具有的,当我们要在地图上作标记时候希望有阴影效果,就在draw中使用此函数即可,使shadow为false.下面是此函数的具体实现。

protected static void
drawAt(Canvas canvas, Drawable drawable, int x, int y, boolean shadow)
{
...
if (shadow)
drawable.setColorFilter(0x7F000000, PorterDuff.Mode.SRC_IN);
canvas.save();
canvas.translate(x, y);
if (shadow) {
canvas.skew(-0.9F, 0.0F);
canvas.scale(1.0F, 0.5F);
}
drawable.draw(canvas);
if (shadow)
drawable.clearColorFilter();
canvas.restore();
}

@Override protected void
onDraw(Canvas canvas)
{
super.onDraw(canvas);

int nX = 100;
int nY = 50;

_DrawShadowImg(canvas, nX, nY);
_DrawNormalImg(canvas, nX, nY);
}

private void
_DrawNormalImg(Canvas canvas, int nX, int nY)
{
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.translate(nX, nY);
m_dw.draw(canvas);
canvas.restore();
}

private void
_DrawShadowImg(Canvas canvas, int nX, int nY)
{
canvas.save(Canvas.MATRIX_SAVE_FLAG);
m_dw.setColorFilter(0x7f000000, PorterDuff.Mode.SRC_IN);
canvas.translate(nX, nY);
canvas.skew(-0.9F, 0.0F);
canvas.scale(1.0F, 0.5F);
m_dw.draw(canvas);
m_dw.clearColorFilter();
canvas.restore();
}

_DrawShadowImg() 就是负责绘制阴影效果的函数。

这个函数主要就是运用 matrix与drawable 的 color filter 這两个功能。首先是 m_dw.setColorFilter(),將整个力道睥颜色都转成半透明的黑色。接着canvas.translate()将卒标第原点移到nX, nY 的位置,而 canvas.skew() 与 canvas.scale()则是将卒标系做个经轴方向的倾斜与y轴方向的大小压缩,最后,调用m_dw.draw() 把图片画出来,阴影效果实现。



from:http://hi.baidu.com/ktscrdjuhcgltuf/item/9a605fbe33a17bf162388ed4

更多相关文章

  1. android - JNI接口函数 (3)
  2. Android之利用android:indeterminateDrawable来实现ProgressBar
  3. android paint api drawText 绘制字体字形
  4. Android利用ViewFlipper实现屏幕切换动画效果
  5. Android开源库项目及库汇总——动画
  6. Android9.0 Activity启动流程分析(一)
  7. Android优秀文章和开源库推荐(持续更新)
  8. Android(安卓)display架构分析四-msm_fb.c 函数和数据结构介绍
  9. (4.1.14)Android使用Activity用作弹出式对话框

随机推荐

  1. VLC for Android(安卓): 编译问题 & 解决
  2. Android(安卓)- Mount a Samba share
  3. Android(安卓)配置 OpenCV2.3.1
  4. 图解Android中的Binder机制
  5. 玩Android的第一天
  6. 为android的HttpClient添加请求超时时间
  7. webView头部加进度加载效果
  8. Activity and Task(二)
  9. Android学习心得之二——Android系统架构
  10. Android图像处理简介の使用内置Camera应