美文网首页
AppCompatActivity的setContentView

AppCompatActivity的setContentView

作者: zsj1225 | 来源:发表于2018-06-23 14:31 被阅读2次
    //AppCompatActivity的setContentView
    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        //setContentView方法
        getDelegate().setContentView(layoutResID);
    }

    //点击看到是抽象的方法
    public abstract void setContentView(@LayoutRes int resId);

    //找getDelegate的对象实现setContentView
    public AppCompatDelegate getDelegate() {
        if (mDelegate == null) {
            mDelegate = AppCompatDelegate.create(this, this);
        }
        return mDelegate;
    }
    
    //做兼容的.
    private static AppCompatDelegate create(Context context, Window window,
            AppCompatCallback callback) {
        if (Build.VERSION.SDK_INT >= 24) {
            return new AppCompatDelegateImplN(context, window, callback);
        } else if (Build.VERSION.SDK_INT >= 23) {
            return new AppCompatDelegateImplV23(context, window, callback);
        } else if (Build.VERSION.SDK_INT >= 14) {
            return new AppCompatDelegateImplV14(context, window, callback);
        } else if (Build.VERSION.SDK_INT >= 11) {
            return new AppCompatDelegateImplV11(context, window, callback);
        } else {
            return new AppCompatDelegateImplV9(context, window, callback);
        }
    }

    // 下面其实就什么好看的,一个一个点进去看。与Activity没什么区别
    @Override
    public void setContentView(int resId) {
        ensureSubDecor();
        ViewGroup contentParent = (ViewGroup) mSubDecor.findViewById(android.R.id.content);
        contentParent.removeAllViews();
        LayoutInflater.from(mContext).inflate(resId, contentParent);
        mOriginalWindowCallback.onContentChanged();
    }

相关文章

网友评论

      本文标题:AppCompatActivity的setContentView

      本文链接:https://www.haomeiwen.com/subject/pugryftx.html