, : 5.0.0_r1, onDraw imageView
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mDrawable == null) {
return;
}
if (mDrawableWidth == 0 || mDrawableHeight == 0) {
return;
}
if (mDrawMatrix == null && mPaddingTop == 0 && mPaddingLeft == 0) {
mDrawable.draw(canvas);
} else {
int saveCount = canvas.getSaveCount();
canvas.save();
if (mCropToPadding) {
final int scrollX = mScrollX;
final int scrollY = mScrollY;
canvas.clipRect(scrollX + mPaddingLeft, scrollY + mPaddingTop,
scrollX + mRight - mLeft - mPaddingRight,
scrollY + mBottom - mTop - mPaddingBottom);
}
canvas.translate(mPaddingLeft, mPaddingTop);
if (mDrawMatrix != null) {
canvas.concat(mDrawMatrix);
}
mDrawable.draw(canvas);
canvas.restoreToCount(saveCount);
}
}
, Paint
, , . Paint
Drawable.getAlpha()
Drawable.getAlpha() API 19, Drawable :
class MyDrawable extends Drawable {
final Drawable originalDrawable;
private int mAlpha = 1;
@Override
public int getAlpha() {
return mAlpha;
}
public MyDrawable(Drawable drawable){
originalDrawable = drawable;
}
@Override
public void draw(Canvas canvas) {
originalDrawable.draw(canvas);
}
@Override
public void setAlpha(int alpha) {
mAlpha = alpha;
originalDrawable.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
originalDrawable.setColorFilter(cf);
}
@Override
public int getOpacity() {
return originalDrawable.getOpacity();
}
}