android.support.v7.widget.RecyclerView#getWidth ( )源码实例Demo

下面列出了android.support.v7.widget.RecyclerView#getWidth ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/** Draw dividers underneath each child view */
public void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin + mInsets;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码2 项目: frpc-Android   文件: DividerItemDecoration.java
public void drawVertical(Canvas c, RecyclerView parent) {
        final int left = parent.getPaddingLeft() + margin;
        final int right = parent.getWidth() - parent.getPaddingRight() - margin;

        final int childCount = parent.getChildCount();
        for (int i = 0; i < childCount-corrected; i++) {
            final View child = parent.getChildAt(i);
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                    .getLayoutParams();
            final int top = child.getBottom() + params.bottomMargin +
                    Math.round(ViewCompat.getTranslationY(child));
//            final int bottom = top + mDivider.getIntrinsicHeight();
            final int bottom = top + 1;
            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }
 
源代码3 项目: FoodOrdering   文件: SpaceItemDecoration.java
public void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        RecyclerView v = new RecyclerView(parent.getContext());
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码4 项目: beaconloc   文件: DividerItemDecoration.java
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
    int left = parent.getPaddingLeft();
    int right = parent.getWidth() - parent.getPaddingRight();

    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount - 1; i++) {
        View child = parent.getChildAt(i);

        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

        int top = child.getBottom() + params.bottomMargin;
        Log.d("debug", "Top: " + String.valueOf(top));
        int bottom = top + mDivider.getIntrinsicHeight();
        Log.d("debug", "Bottom: " + String.valueOf(top));

        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码6 项目: baseAdapter   文件: DividerItemDecoration.java
public void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        RecyclerView v = new RecyclerView(parent.getContext());
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码7 项目: ContactsList   文件: FloatingBarItemDecoration.java
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
    super.onDraw(c, parent, state);
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();
    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
        int position = params.getViewAdapterPosition();
        if (!mList.containsKey(position)) {
            continue;
        }
        drawTitleArea(c, left, right, child, params, position);
    }
}
 
源代码8 项目: chat21-android-sdk   文件: ItemDecoration.java
@Override
public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
    canvas.save();
    final int leftWithMargin = convertDpToPx(56);
    final int right = parent.getWidth();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        parent.getDecoratedBoundsWithMargins(child, mBounds);
        final int bottom = mBounds.bottom + Math.round(ViewCompat.getTranslationY(child));
        final int top = bottom - mDivider.getIntrinsicHeight();
        mDivider.setBounds(leftWithMargin, top, right, bottom);
        mDivider.draw(canvas);
    }
    canvas.restore();
}
 
源代码9 项目: Slice   文件: DividerItemDecoration.java
@Override
public void onDraw(Canvas c, RecyclerView parent) {
    int left = parent.getPaddingLeft() + leftAddition;
    int right = parent.getWidth() - parent.getPaddingRight() - rightAddition;

    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = parent.getChildAt(i);
        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
        int top = child.getBottom() + params.bottomMargin;
        int bottom = top + mDivider.getIntrinsicHeight();

        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码10 项目: AndroidHttpCapture   文件: RecycleViewDivider.java
public void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext());
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码11 项目: FimiX8-RE   文件: RecyclerDividerItemDecoration.java
public void drawVertical(Canvas c, RecyclerView parent) {
    int left = parent.getPaddingLeft();
    int right = parent.getWidth() - parent.getPaddingRight();
    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = parent.getChildAt(i);
        RecyclerView v = new RecyclerView(parent.getContext());
        int top = child.getBottom() + ((LayoutParams) child.getLayoutParams()).bottomMargin;
        int bottom = top + this.mDividerHeight;
        if (this.mPaint != null) {
            c.drawRect((float) left, (float) top, (float) right, (float) bottom, this.mPaint);
        }
    }
}
 
源代码12 项目: MicroReader   文件: DividerItemDecoration.java
private void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                .getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码13 项目: Tangram-Android   文件: SwipeItemTouchListener.java
@Override
public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {

    mSwipeGestureDector.onTouchEvent(motionEvent);

    if (motionEvent.getAction() == MotionEvent.ACTION_UP ||
            motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {

        final boolean reachActionEdge = swipeType == SWIPING_HOR && (Math.abs(mDistanceX) > (mActionEdge > 0 ?
                mActionEdge : recyclerView.getWidth() / 3));

        boolean reachTabEdge = false;
        if (mSwipeCardRef != null && mSwipeCardRef.get() != null && swipeType == SWIPING_HOR) {
            SwipeCard swipeCard = mSwipeCardRef.get();
            if (swipeCard.getCurrentIndex() == 0 && mDistanceX > 0
                    || (swipeCard.getCurrentIndex() == swipeCard.getTotalPage() - 1) && mDistanceX < 0) {
                reachTabEdge = true;
            }
        }
        int direction = 1;
        if (swipeType == SWIPING_HOR) {
            direction = mDistanceX > 0 ? 1 : -1;
        } else if (swipeType == SWIPING_VER) {
            direction = mDistanceY > 0 ? 1 : -1;
        }
        resetViews(recyclerView, swipeType, reachActionEdge && !reachTabEdge, direction);

    }
}
 
/**
 * 通知重新绘制
 * 使用场景:网络图片加载后调用
 *
 * @param recyclerView recyclerView
 * @param realPosition     realPosition
 */
public void notifyRedraw(RecyclerView recyclerView, View viewGroup, int realPosition) {
    viewGroup.setDrawingCacheEnabled(false);
    int firstPositionInGroup = getFirstInGroupWithCash(realPosition);
    mBitmapCache.remove(firstPositionInGroup);
    mHeadViewCache.remove(firstPositionInGroup);
    int left = recyclerView.getPaddingLeft();
    int right = recyclerView.getWidth() - recyclerView.getPaddingRight();
    measureAndLayoutView(viewGroup, left, right);
    mHeadViewCache.put(firstPositionInGroup, viewGroup);
    recyclerView.invalidate();
}
 
源代码15 项目: timecat   文件: PlanDetailActivity.java
@Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            int childCount = mRecyclerView.getChildCount();
            int width = mRecyclerView.getChildAt(0).getWidth();
            int padding = (mRecyclerView.getWidth() - width) / 2;

            for (int j = 0; j < childCount; j++) {
                View v = recyclerView.getChildAt(j);
                //往左 从 padding 到 -(v.getWidth()-padding) 的过程中,由大到小
                float rate = 0;
                if (v.getLeft() <= padding) {
                    if (v.getLeft() >= padding - v.getWidth()) {
                        rate = (padding - v.getLeft()) * 1f / v.getWidth();
                    } else {
                        rate = 1;
                    }
//                    v.setScaleY(1 - rate * 0.1f);
                    v.setScaleX(1 - rate * 0.1f);

                } else {
                    //往右 从 padding 到 recyclerView.getWidth()-padding 的过程中,由大到小
                    if (v.getLeft() <= recyclerView.getWidth() - padding) {
                        rate = (recyclerView.getWidth() - padding - v.getLeft()) * 1f / v.getWidth();
                    }
//                    v.setScaleY(0.9f + rate * 0.1f);
                    v.setScaleX(0.9f + rate * 0.1f);
                }
            }
        }
 
源代码16 项目: MultiView   文件: ViewUtils.java
public static boolean isChildInCenterX(RecyclerView recyclerView, View view) {
    int childCount = recyclerView.getChildCount();
    int[] lvLocationOnScreen = new int[2];
    int[] vLocationOnScreen = new int[2];
    recyclerView.getLocationOnScreen(lvLocationOnScreen);
    int middleX = (int) (lvLocationOnScreen[0] + recyclerView.getWidth() * recyclerView.getScaleX() / 2);
    if (childCount > 0) {
        view.getLocationOnScreen(vLocationOnScreen);
        if (vLocationOnScreen[0] <= middleX && vLocationOnScreen[0] + view.getWidth() * view.getScaleX() >= middleX) {
            return true;
        }
    }
    return false;
}
 
源代码17 项目: DragBoardView   文件: DragBoardView.java
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    int childCount = mRecyclerView.getChildCount();
    int width = mRecyclerView.getChildAt(0).getWidth();
    int padding = (mRecyclerView.getWidth() - width) / 2;

    for (int j = 0; j < childCount; j++) {
        View v = recyclerView.getChildAt(j);
        //往左 从 padding 到 -(v.getWidth()-padding) 的过程中,由大到小
        float rate = 0;
        if (v.getLeft() <= padding) {
            if (v.getLeft() >= padding - v.getWidth()) {
                rate = (padding - v.getLeft()) * 1f / v.getWidth();
            } else {
                rate = 1;
            }
            v.setScaleX(1 - rate * 0.1f);

        } else {
            //往右 从 padding 到 recyclerView.getWidth()-padding 的过程中,由大到小
            if (v.getLeft() <= recyclerView.getWidth() - padding) {
                rate = (recyclerView.getWidth() - padding - v.getLeft()) * 1f / v.getWidth();
            }
            v.setScaleX(0.9f + rate * 0.1f);
        }
    }
}
 
源代码18 项目: EasyAdapter   文件: DividerItemDecoration.java
public void drawVertical(Canvas c, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext());
        final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
        final int top = child.getBottom() + params.bottomMargin;
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}
 
源代码19 项目: KUtils-master   文件: DividerItemDecoration.java
/**
 * 绘制纵向 item 分割线 这里的parent其实是显示在屏幕显示的这部分
 */
private void drawVertical(Canvas canvas, RecyclerView parent) {
    /**
     当orientation为 Vertical 时,Item的分割线为多条水平的条形
     所以,分割线的Left和Right就比较容易确定
     Left = parent.left = parent.paddingLeft
     right = parent.getWidth() - parent.getPaddingRight
     分割线的 Top 和 Bottom 则需要计算出有多少个Item
     根据Item的位置获取到child的位置坐标
     所以分割线的Top = child的下边的坐标 + child的外边距的距离
     top = child.getBottom() + parms.bottomMargin
     然后根据上边 + 分割线的高度 得到右边的坐标
     bottom = top + mDivider.getIntrinsicHeight()
     为了统一分割线的间隔,故共同使用Height的数值作为间隔的距离
     */
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();
    final int childSize = parent.getChildCount();
    for (int i = 0; i < childSize; i++) {
        final View child = parent.getChildAt(i);
        RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
        final int top = child.getBottom() + layoutParams.bottomMargin;
        final int bottom = top + mDividerHeight;
        if (i == 0) {
            if (isMarginTopShow) {
                /**第一个view,可以在顶部加一个margin值*/
                int topF = child.getTop() - layoutParams.topMargin - mDividerHeight;
                int bottomF = child.getTop() - layoutParams.topMargin;
                if (mDivider != null) {
                    mDivider.setBounds(left, topF, right, bottomF);
                    mDivider.draw(canvas);
                    if (isMiddleShow) {
                        mDivider.setBounds(left, top, right, bottom);
                        mDivider.draw(canvas);
                    }
                }
                if (mPaint != null) {
                    canvas.drawRect(left, topF, right, bottomF, mPaint);
                    if (isMiddleShow) {
                        canvas.drawRect(left, top, right, bottom, mPaint);
                    }
                }
            } else {
                if (isMiddleShow) {
                    if (mDivider != null) {
                        mDivider.setBounds(left, top, right, bottom);
                        mDivider.draw(canvas);
                    }
                    if (mPaint != null) {
                        canvas.drawRect(left, top, right, bottom, mPaint);
                    }
                }
            }
        } else {
            if (isMiddleShow || i >= childSize - 1) {
                if (mDivider != null) {
                    mDivider.setBounds(left, top, right, bottom);
                    mDivider.draw(canvas);
                }
                if (mPaint != null) {
                    canvas.drawRect(left, top, right, bottom, mPaint);
                }
            }
        }
    }
}
 
@Override
protected Rect getDividerBound(int position, RecyclerView parent, View child) {
    Rect bounds = new Rect(0, 0, 0, 0);
    int transitionX = (int) ViewCompat.getTranslationX(child);
    int transitionY = (int) ViewCompat.getTranslationY(child);
    RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
    bounds.left = parent.getPaddingLeft() +
            mMarginProvider.dividerLeftMargin(position, parent) + transitionX;
    bounds.right = parent.getWidth() - parent.getPaddingRight() -
            mMarginProvider.dividerRightMargin(position, parent) + transitionX;

    int dividerSize = getDividerSize(position, parent);
    boolean isReverseLayout = isReverseLayout(parent);
    if (mDividerType == DividerType.DRAWABLE) {
        // set top and bottom position of divider
        if (isReverseLayout) {
            bounds.bottom = child.getTop() - params.topMargin + transitionY;
            bounds.top = bounds.bottom - dividerSize;
        } else {
            bounds.top = child.getBottom() + params.bottomMargin + transitionY;
            bounds.bottom = bounds.top + dividerSize;
        }
    } else {
        // set center point of divider
        int halfSize = dividerSize / 2;
        if (isReverseLayout) {
            bounds.top = child.getTop() - params.topMargin - halfSize + transitionY;
        } else {
            bounds.top = child.getBottom() + params.bottomMargin + halfSize + transitionY;
        }
        bounds.bottom = bounds.top;
    }

    if (mPositionInsideItem) {
        if (isReverseLayout) {
            bounds.top += dividerSize;
            bounds.bottom += dividerSize;
        } else {
            bounds.top -= dividerSize;
            bounds.bottom -= dividerSize;
        }
    }

    return bounds;
}