在使用ImageView的过程中,使用src或者backgroud都可以设置图片,但这两者是有区别的。
1.backgroud继承于父类view,而src是ImageView的自带属性。
2.绘制过程不同。
public void draw(Canvas canvas) {
......
if (!dirtyOpaque) {
drawBackground(canvas);//绘制背景
}
// skip step 2 & 5 if possible (common case)
final int viewFlags = mViewFlags;
boolean horizontalEdges = (viewFlags & FADING_EDGE_HORIZONTAL) != 0;
boolean verticalEdges = (viewFlags & FADING_EDGE_VERTICAL) != 0;
if (!verticalEdges && !horizontalEdges) {
// Step 3, draw the content
if (!dirtyOpaque) onDraw(canvas);//绘制自身
......
}
从view的draw方法可以看到,它会先绘制background,然后调用自身的onDraw()方法。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
......
if (mDrawMatrix == null && mPaddingTop == 0 && mPaddingLeft == 0) {
mDrawable.draw(canvas);//绘制mDrawable
} else {
......
}
}
在ImageView的ondraw()方法中,会绘制src引用的drawable。