当前位置: 首页>>代码示例>>Java>>正文


Java StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions方法代码示例

本文整理汇总了Java中android.support.v7.widget.StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions方法的典型用法代码示例。如果您正苦于以下问题:Java StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions方法的具体用法?Java StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions怎么用?Java StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在android.support.v7.widget.StaggeredGridLayoutManager的用法示例。


在下文中一共展示了StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: canChildScrollUp

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
public static boolean canChildScrollUp(View view) {
    if (android.os.Build.VERSION.SDK_INT < 14) {
        if (view instanceof AbsListView) {
            final AbsListView absListView = (AbsListView) view;
            return absListView.getChildCount() > 0
                    && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
                    .getTop() < absListView.getPaddingTop());
        } else if(view instanceof  RecyclerView){
            RecyclerView recyclerView = (RecyclerView)view;
            RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
            if(layoutManager instanceof LinearLayoutManager){
                int position = ((LinearLayoutManager) layoutManager).findFirstCompletelyVisibleItemPosition();
                return position != 0;
            }else{
                if(layoutManager instanceof StaggeredGridLayoutManager ){
                    StaggeredGridLayoutManager stagger = (StaggeredGridLayoutManager) layoutManager;
                    int[] positions = stagger.findFirstCompletelyVisibleItemPositions(null);
                    return positions[0] != 0;
                }else{
                    throw new RuntimeException("can not support this LayoutManager ");
                }
            }
        }else{
            return view.getScrollY() > 0;
        }
    } else {
        return view.canScrollVertically(-1);
    }
}
 
开发者ID:liu-xiao-dong,项目名称:JD-Test,代码行数:30,代码来源:PtrDefaultHandler.java

示例2: findFirstCompletelyVisibleItemPosition

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
public static int findFirstCompletelyVisibleItemPosition(RecyclerView recyclerView) {
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    int firstPosition;
    if (layoutManager instanceof LinearLayoutManager) {
        firstPosition = ((LinearLayoutManager) layoutManager).findFirstCompletelyVisibleItemPosition();
    } else if (layoutManager instanceof GridLayoutManager) {
        firstPosition = ((LinearLayoutManager) layoutManager).findFirstCompletelyVisibleItemPosition();
    } else if (layoutManager instanceof StaggeredGridLayoutManager) {
        StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
        int[] lastPositions = new int[staggeredGridLayoutManager.getSpanCount()];
        staggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions(lastPositions);
        firstPosition = findMin(lastPositions);
    } else {
        throw new RuntimeException(
                "Unsupported LayoutManager used. Valid ones are LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager");
    }
    return firstPosition;
}
 
开发者ID:LonelyMushroom,项目名称:aarLibrary,代码行数:19,代码来源:Utils.java

示例3: getFirstVisiblePosition

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
private int getFirstVisiblePosition() {
    int position;
    if (getLayoutManager() instanceof LinearLayoutManager) {
        position = ((LinearLayoutManager) getLayoutManager()).findFirstCompletelyVisibleItemPosition();
    } else if (getLayoutManager() instanceof GridLayoutManager) {
        position = ((GridLayoutManager) getLayoutManager()).findFirstCompletelyVisibleItemPosition();
    } else {
        StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) getLayoutManager();
        int[] firstPositions =
                layoutManager.findFirstCompletelyVisibleItemPositions(new int[layoutManager.getSpanCount()]);
        position = getMinPosition(firstPositions);
    }
    return position;
}
 
开发者ID:littleloulou,项目名称:PullToRefreshRecyclerView,代码行数:15,代码来源:PullToRefreshRecyclerView.java

示例4: calculateFirstVisibleItemPos

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
/**
 * 计算第一个元素的位置
 */

private int calculateFirstVisibleItemPos(int type, RecyclerView.LayoutManager layoutManager, int firstVisibleItemPosition) {
    switch (type) {
        case TYPE_LINEAR:
            mLastVisibleItemPosition = ((LinearLayoutManager) layoutManager)
                    .findLastVisibleItemPosition();
            firstVisibleItemPosition = ((LinearLayoutManager) layoutManager)
                    .findFirstVisibleItemPosition();
            break;
        case TYPE_GRID:
            mLastVisibleItemPosition = ((GridLayoutManager) layoutManager)
                    .findLastVisibleItemPosition();
            firstVisibleItemPosition = ((GridLayoutManager) layoutManager)
                    .findFirstVisibleItemPosition();
            break;
        case TYPE_STAGGERED_GRID:
            StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
            if (mLastPositions == null) {
                mLastPositions = new int[staggeredGridLayoutManager.getSpanCount()];
            }
            mLastPositions = staggeredGridLayoutManager
                    .findLastVisibleItemPositions(mLastPositions);
            mLastVisibleItemPosition = findMax(mLastPositions);
            staggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions(mLastPositions);
            firstVisibleItemPosition = findMax(mLastPositions);
            break;
        default:
            break;
    }
    return firstVisibleItemPosition;
}
 
开发者ID:imliujun,项目名称:LJFramework,代码行数:35,代码来源:OnRcvScrollListener.java

示例5: onScrolled

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
@Override
public void onScrolled(int dx, int dy) {
    super.onScrolled(dx, dy);

    int firstVisibleItemPosition = 0;
    LayoutManager layoutManager = getLayoutManager();

    if (layoutManagerType == null) {
        if (layoutManager instanceof LinearLayoutManager) {
            layoutManagerType = SRecyclerView.LayoutManagerType.LinearLayout;
        } else if (layoutManager instanceof GridLayoutManager) {
            layoutManagerType = SRecyclerView.LayoutManagerType.GridLayout;
        } else if (layoutManager instanceof StaggeredGridLayoutManager) {
            layoutManagerType = SRecyclerView.LayoutManagerType.StaggeredGridLayout;
        } else {
            throw new RuntimeException(
                    "Unsupported LayoutManager used. Valid ones are LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager");
        }
    }

    switch (layoutManagerType) {
        case LinearLayout:
            firstVisibleItemPosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
            lastVisibleItemPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition();
            break;
        case GridLayout:
            firstVisibleItemPosition = ((GridLayoutManager) layoutManager).findFirstVisibleItemPosition();
            lastVisibleItemPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition();
            break;
        case StaggeredGridLayout:
            StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
            if (lastPositions == null) {
                lastPositions = new int[staggeredGridLayoutManager.getSpanCount()];
            }
            staggeredGridLayoutManager.findLastVisibleItemPositions(lastPositions);
            lastVisibleItemPosition = findMax(lastPositions);
            staggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions(lastPositions);
            firstVisibleItemPosition = findMax(lastPositions);
            break;
    }

    // 根据类型来计算出第一个可见的item的位置,由此判断是否触发到底部的监听器
    // 计算并判断当前是向上滑动还是向下滑动
    calculateScrollUpOrDown(firstVisibleItemPosition, dy);
    // 移动距离超过一定的范围,我们监听就没有啥实际的意义了
    mScrolledXDistance += dx;
    mScrolledYDistance += dy;
    mScrolledXDistance = (mScrolledXDistance < 0) ? 0 : mScrolledXDistance;
    mScrolledYDistance = (mScrolledYDistance < 0) ? 0 : mScrolledYDistance;
    if (mIsScrollDown && (dy == 0)) {
        mScrolledYDistance = 0;
    }
    //Be careful in here
    if (null != mLScrollListener) {
        mLScrollListener.onScrolled(mScrolledXDistance, mScrolledYDistance);
    }

}
 
开发者ID:magicbaby810,项目名称:SRecyclerView,代码行数:59,代码来源:SRecyclerView.java

示例6: onScrolled

import android.support.v7.widget.StaggeredGridLayoutManager; //导入方法依赖的package包/类
@Override
public void onScrolled(int dx, int dy) {
    super.onScrolled(dx, dy);
    int firstVisibleItemPosition = 0;
    LayoutManager layoutManager = getLayoutManager();
    if (mLayoutManagerType == null) {
        if (layoutManager instanceof LinearLayoutManager) {
            mLayoutManagerType = LayoutManagerType.LINEAR_LAYOUT;
        } else if (layoutManager instanceof StaggeredGridLayoutManager) {
            mLayoutManagerType = LayoutManagerType.STAGGERED_GRID_LAYOUT;
        } else if (layoutManager instanceof GridLayoutManager) {
            mLayoutManagerType = LayoutManagerType.GRID_LAYOUT;
        } else {
            throw new RuntimeException("老铁,你没设置布局管理器,还是设置了什么奇怪的类型");
        }
    }

    switch (mLayoutManagerType) {
        case LINEAR_LAYOUT:
            firstVisibleItemPosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
            mLastVisibleItemPosition = ((LinearLayoutManager) layoutManager).findLastCompletelyVisibleItemPosition();
            break;
        case STAGGERED_GRID_LAYOUT:
            firstVisibleItemPosition = ((GridLayoutManager) layoutManager).findFirstVisibleItemPosition();
            mLastVisibleItemPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition();
            break;
        case GRID_LAYOUT:
            StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
            if (mLastVisibleItemPositions == null) {
                mLastVisibleItemPositions = new int[staggeredGridLayoutManager.getSpanCount()];
            }
            staggeredGridLayoutManager.findLastVisibleItemPositions(mLastVisibleItemPositions);
            mLastVisibleItemPosition = findMax(mLastVisibleItemPositions);
            staggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions(mLastVisibleItemPositions);
            firstVisibleItemPosition = findMax(mLastVisibleItemPositions);
            break;
        default:
            break;
    }

    calculateScrollUpOrDown(firstVisibleItemPosition, dy);
    mScrolledXDistance += dx;
    mScrolledYDistance += dy;
    mScrolledXDistance = (mScrolledXDistance < 0) ? 0 : mScrolledXDistance;
    mScrolledYDistance = (mScrolledYDistance < 0) ? 0 : mScrolledYDistance;
    if (mIsUpToDown && (dy == 0)) {
        mScrolledYDistance = 0;
    }

    if (mUltimateScrollLister != null) {
        mUltimateScrollLister.onScrolled(mScrolledXDistance, mScrolledYDistance);
    }
}
 
开发者ID:yedashen,项目名称:UltimateRecyclerView,代码行数:54,代码来源:UltimateRecyclerView.java


注:本文中的android.support.v7.widget.StaggeredGridLayoutManager.findFirstCompletelyVisibleItemPositions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。