Search in sources :

Example 1 with RefreshHeaderWrapper

use of com.scwang.smartrefresh.impl.RefreshHeaderWrapper in project CollapsingRefresh by ckrgithub.

the class SmartRefreshLayout method onFinishInflate.

// </editor-fold>
// <editor-fold desc="生命周期 life cycle">
@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    Logd(TAG, "onFinish,Inflate: ");
    final int count = getChildCount();
    if (count > 3) {
        throw new RuntimeException("最多只支持3个子View,Most only support three sub view");
    } else if (mEnablePureScrollMode && count > 1) {
        throw new RuntimeException("PureScrollMode模式只支持一个子View,Most only support one sub view in PureScrollMode");
    }
    Logw(TAG, "onFinishInflate: count:" + count);
    // 定义为确认的子View索引
    boolean[] uncertains = new boolean[count];
    // 第一次查找确认的 子View
    for (int i = 0; i < count; i++) {
        View view = getChildAt(i);
        Logw(TAG, "onFinishInflate: view:" + view);
        if (view instanceof RefreshHeader && mRefreshHeader == null) {
            mRefreshHeader = ((RefreshHeader) view);
        } else if (view instanceof RefreshFooter && mRefreshFooter == null) {
            mEnableLoadmore = mEnableLoadmore || !mManualLoadmore;
            mRefreshFooter = ((RefreshFooter) view);
        } else if (mRefreshContent == null && (view instanceof AbsListView || view instanceof WebView || view instanceof ScrollView || view instanceof ScrollingView || view instanceof NestedScrollingChild || view instanceof NestedScrollingParent || view instanceof ViewPager)) {
            mRefreshContent = new RefreshContentWrapper(view);
        } else if (RefreshHeaderWrapper.isTagedHeader(view) && mRefreshHeader == null) {
            mRefreshHeader = new RefreshHeaderWrapper(view);
        } else if (RefreshFooterWrapper.isTagedFooter(view) && mRefreshFooter == null) {
            mRefreshFooter = new RefreshFooterWrapper(view);
        } else if (RefreshContentWrapper.isTagedContent(view) && mRefreshContent == null) {
            mRefreshContent = new RefreshContentWrapper(view);
        } else {
            // 标记未确认
            uncertains[i] = true;
        }
    }
    // 如果有 未确认(uncertains)的子View 通过智能算法计算
    for (int i = 0; i < count; i++) {
        if (uncertains[i]) {
            View view = getChildAt(i);
            Logd(TAG, "onFinishInflate: uncertains:" + view);
            if (count == 1 && mRefreshContent == null) {
                mRefreshContent = new RefreshContentWrapper(view);
            } else if (i == 0 && mRefreshHeader == null) {
                mRefreshHeader = new RefreshHeaderWrapper(view);
            } else if (count == 2 && mRefreshContent == null) {
                mRefreshContent = new RefreshContentWrapper(view);
            } else if (i == 2 && mRefreshFooter == null) {
                mEnableLoadmore = mEnableLoadmore || !mManualLoadmore;
                mRefreshFooter = new RefreshFooterWrapper(view);
            } else if (mRefreshContent == null) {
                mRefreshContent = new RefreshContentWrapper(view);
            }
        }
    }
    if (isInEditMode()) {
        if (mPrimaryColors != null) {
            if (mRefreshHeader != null) {
                mRefreshHeader.setPrimaryColors(mPrimaryColors);
            }
            if (mRefreshFooter != null) {
                mRefreshFooter.setPrimaryColors(mPrimaryColors);
            }
        }
        // TODO: 2017/10/8 头部、内容、底部排序
        if (mRefreshContent != null) {
            bringChildToFront(mRefreshContent.getView());
        }
        if (mRefreshHeader != null && mRefreshHeader.getSpinnerStyle() != SpinnerStyle.FixedBehind) {
            if (isHeaderFixBehind) {
            } else {
                bringChildToFront(mRefreshHeader.getView());
            }
        }
        if (mRefreshFooter != null && mRefreshFooter.getSpinnerStyle() != SpinnerStyle.FixedBehind) {
            bringChildToFront(mRefreshFooter.getView());
        }
        if (mKernel == null) {
            mKernel = new RefreshKernelImpl();
        }
    }
}
Also used : RefreshHeaderWrapper(com.scwang.smartrefresh.impl.RefreshHeaderWrapper) RefreshHeader(com.scwang.smartrefresh.api.RefreshHeader) RefreshFooter(com.scwang.smartrefresh.api.RefreshFooter) ScrollingView(android.support.v4.view.ScrollingView) AbsListView(android.widget.AbsListView) ScrollingView(android.support.v4.view.ScrollingView) View(android.view.View) WebView(android.webkit.WebView) AbsListView(android.widget.AbsListView) ScrollView(android.widget.ScrollView) ViewPager(android.support.v4.view.ViewPager) Paint(android.graphics.Paint) NestedScrollingParent(android.support.v4.view.NestedScrollingParent) RefreshFooterWrapper(com.scwang.smartrefresh.impl.RefreshFooterWrapper) ScrollView(android.widget.ScrollView) NestedScrollingChild(android.support.v4.view.NestedScrollingChild) RefreshContentWrapper(com.scwang.smartrefresh.impl.RefreshContentWrapper) WebView(android.webkit.WebView)

Aggregations

Paint (android.graphics.Paint)1 NestedScrollingChild (android.support.v4.view.NestedScrollingChild)1 NestedScrollingParent (android.support.v4.view.NestedScrollingParent)1 ScrollingView (android.support.v4.view.ScrollingView)1 ViewPager (android.support.v4.view.ViewPager)1 View (android.view.View)1 WebView (android.webkit.WebView)1 AbsListView (android.widget.AbsListView)1 ScrollView (android.widget.ScrollView)1 RefreshFooter (com.scwang.smartrefresh.api.RefreshFooter)1 RefreshHeader (com.scwang.smartrefresh.api.RefreshHeader)1 RefreshContentWrapper (com.scwang.smartrefresh.impl.RefreshContentWrapper)1 RefreshFooterWrapper (com.scwang.smartrefresh.impl.RefreshFooterWrapper)1 RefreshHeaderWrapper (com.scwang.smartrefresh.impl.RefreshHeaderWrapper)1