@Override protected void onDraw(Canvas canvas) { final int saveCount = canvas.save(); Rect rect = mDrawable.getBounds(); int l = getPaddingLeft() + (getMeasuredWidth() - mDrawable.getIntrinsicWidth()) / 2; canvas.translate(l, getPaddingTop()); canvas.scale(mScale, mScale, rect.exactCenterX(), rect.exactCenterY()); mDrawable.draw(canvas); canvas.restoreToCount(saveCount); }