@Override public void draw(Canvas canvas) { if (mDrawable!=null) { int sc=canvas.save(); if (mAnimation!=null) { mAnimation.getTransformation( AnimationUtils.currentAnimationTimeMillis(), mTransformation); canvas.concat(mTransformation.getMatrix()); } mDrawable.draw(canvas); canvas.restoreToCount(sc); } }

canvas.save()和canvas.restoreToCount(sc);是用来保存和回复Canvas的状态(Maxtrix等属性),因为我们需要修改Canvas的Matrix属性,canvas.concat方法都会和当前Canvas的Matrix进行矩阵运算,如果我么不保存之前的Matrix属性,每次都会很上次矩阵运算的结果相乘,对应本例来说,每次平移的距离会越来越大。

更多相关文章

  1. Android之Bean属性通知类
  2. View的XML 属性大全(官方文档)
  3. Android中关于矩阵(Matrix)前乘后乘的一些认识
  4. Android ImageView 的scaleType属性
  5. Android属性 bulid.prop等

随机推荐

  1. Android模拟器入门
  2. Android(安卓)分辨率 及 px, dip相互转换
  3. 更新ADT20后出现This template depends o
  4. Android开机时桌面Widget的载入流程
  5. SwipeRefreshLayout和ListView的EmptyVie
  6. 可以显示九天天气情况的天气预报哦-LINUX
  7. Android使用KSOAP2调用WebService及正确
  8. android 弹出Dialog的时候播放声音!
  9. [转]五大布局对象---FrameLayout,LinearL
  10. [置顶] android 耳机按钮深层理解