android View的background何时加载的

作为安卓开发者的我们,经常为view设置背景,而且大部分时候是在xml里面通过view的android:background属性进行设置的,或设置成一张图片,或设置成纯颜色。

然后呢,我们也知道view的绘制流程要经过三大步:onMeasure,这是测量view的大小的;onLayout,这是确定view的位置的;onDraw,这是具体绘制view的。那么,这里抛出一个问题:backgound应该也属于view的具体视觉呈现,是否是在onDraw里面进行的呢?这个问题是我自己玩的时候偶然联想到的,该问题的答案是否定的。我们只要在xml里面配置过backgound,那么即使我们的view的onDraw什么也不干,那么背景也会呈现出来,那么这个backgound是在哪里、什么时候设置的呢。

我们来看一下VIew的构造函数:

public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {        this(context);        ......        Drawable background = null;        ......        final int N = a.getIndexCount();        for (int i = 0; i < N; i++) {            int attr = a.getIndex(i);            switch (attr) {                case com.android.internal.R.styleable.View_background:                    background = a.getDrawable(attr);                    break;                case com.android.internal.R.styleable.View_padding:                    padding = a.getDimensionPixelSize(attr, -1);                    mUserPaddingLeftInitial = padding;                    mUserPaddingRightInitial = padding;                    leftPaddingDefined = true;                    rightPaddingDefined = true;                    break;                ......            }        }        ......        if (background != null) {            setBackground(background);        }        ......}

看到这里就知道了,原来view在构造的时候就已经为自己设置完背景了。本文纯属思维发散,分享出来供大家参考借鉴。

更多相关文章

  1. Android实现背景图自适应不失真
  2. android TextView 的圆角背景
  3. Android 背景音乐播放
  4. listview 拖动 背景变黑
  5. android 动态设置圆角背景(来自http://www.oschina.net/code/snip
  6. android 自定义menu背景
  7. Android 如何在通话中播放音乐/通话背景音

随机推荐

  1. Android 后台保活设计2019,最新版本
  2. Android 读取正在运行非系统的程序
  3. 【Android】获取apk的版本及包名等信息
  4. Android http HttpURLConnection
  5. Android通过Uri获取文件的路径的方法
  6. android studio 安装以及运行
  7. android 可点击的listView项
  8. (转帖)Android系列之Message机制的灵活应用
  9. android 程序自动更新
  10. android doc例程---Notepad Tutorial学习