欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

萬(wàn)能RecyclerView分割線

 更新時(shí)間:2017年01月05日 15:39:21   作者:無(wú)心下棋  
這篇文章主要介紹了萬(wàn)能RecyclerView分割線的相關(guān)代碼,告訴大家如何準(zhǔn)確調(diào)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

就不多敘述了,直接上代碼

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.TypedValue;
import android.view.View;

public class DividerItemDecoration extends RecyclerView.ItemDecoration {

  /*
  * RecyclerView的布局方向,默認(rèn)先賦值
  * 為縱向布局
  * RecyclerView 布局可橫向,也可縱向
  * 橫向和縱向?qū)?yīng)的分割想畫法不一樣
  * */
  private int mOrientation = LinearLayoutManager.VERTICAL;

  /**
   * item之間分割線的size,1---5
   */
  private int mSize;

  /**
   * 繪制item分割線的畫筆,和設(shè)置其屬性
   * 來(lái)繪制個(gè)性分割線
   */
  private Paint mPaint;


  /**
   * 構(gòu)造方法傳入布局方向,不可不傳
   *
   * @param context   context
   * @param orientation 布局方向
   * @param color    顏色
   * @param mItemSize  item之間分割線的size
   */

  public DividerItemDecoration(Context context, int orientation, int color, int mItemSize) {
    this.mOrientation = orientation;
    /*
   item之間分割線的顏色
   */
    this.mSize= mItemSize;
    if (orientation != LinearLayoutManager.VERTICAL && orientation != LinearLayoutManager.HORIZONTAL) {
      throw new IllegalArgumentException("LinearLayoutManager error");
    }
    mSize = (int) TypedValue.applyDimension(mItemSize, TypedValue.COMPLEX_UNIT_DIP, context.getResources().getDisplayMetrics());
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setColor(color);
     /*設(shè)置填充*/
    mPaint.setStyle(Paint.Style.FILL);
  }

  @Override
  public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
    if (mOrientation == LinearLayoutManager.VERTICAL) {
      drawVertical(c, parent);
    } else {
      drawHorizontal(c, parent);
    }
  }

  /**
   * 繪制縱向 item 分割線
   *
   * @param canvas canvas
   * @param parent parent
   */
  private void drawVertical(Canvas canvas, RecyclerView parent) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getMeasuredWidth() - 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 + mSize;
      canvas.drawRect(left, top, right, bottom, mPaint);
    }
  }

  /**
   * 繪制橫向 item 分割線
   *
   * @param canvas canvas
   * @param parent parent
   */
  private void drawHorizontal(Canvas canvas, RecyclerView parent) {
    final int top = parent.getPaddingTop();
    final int bottom = parent.getMeasuredHeight() - parent.getPaddingBottom();
    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 left = child.getRight() + layoutParams.rightMargin;
      final int right = left + mSize;
      canvas.drawRect(left, top, right, bottom, mPaint);
    }
  }

  /**
   * 設(shè)置item分割線的size
   *
   * @param outRect outRect
   * @param view  view
   * @param parent parent
   * @param state  state
   */
  @Override
  public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    if (mOrientation == LinearLayoutManager.VERTICAL) {
      outRect.set(0, 0, 0, mSize);
    } else {
      outRect.set(0, 0, mSize, 0);
    }
  }
}

調(diào)用的時(shí)候這樣寫:

復(fù)制代碼 代碼如下:
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL, Color.RED,5));

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論