最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

萬能RecyclerView分割線

 更新時(shí)間:2017年01月05日 15:39:21   作者:無心下棋  
這篇文章主要介紹了萬能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è)置其屬性
   * 來繪制個(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)文章

  • 設(shè)備APP開發(fā)環(huán)境配置細(xì)節(jié)介紹

    設(shè)備APP開發(fā)環(huán)境配置細(xì)節(jié)介紹

    隨著工業(yè)自動(dòng)化的不斷發(fā)展,設(shè)備APP也越來越重要,本文就設(shè)備APP開發(fā)軟件配置細(xì)節(jié)做一個(gè)深入詳解
    2022-09-09
  • Android開發(fā)實(shí)現(xiàn)日期時(shí)間控件選擇

    Android開發(fā)實(shí)現(xiàn)日期時(shí)間控件選擇

    這篇文章主要為大家詳細(xì)介紹了Android開發(fā)實(shí)現(xiàn)日期時(shí)間控件選擇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼

    android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼

    本篇文章主要介紹了android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Android編程視頻播放API之MediaPlayer用法示例

    Android編程視頻播放API之MediaPlayer用法示例

    這篇文章主要介紹了Android編程視頻播放API之MediaPlayer用法,結(jié)合實(shí)例形式分析了基于Android API實(shí)現(xiàn)視頻播放功能的多媒體文件讀取、判斷、事件響應(yīng)及流媒體播放等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-08-08
  • android讀取掃碼模組數(shù)據(jù)的方法

    android讀取掃碼模組數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了android讀取掃碼模組數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Kotlin伴隨對(duì)象的初始化方法示例講解

    Kotlin伴隨對(duì)象的初始化方法示例講解

    Kotlin語言的許多特性,包括變量不可變,變量不可為空,等等。這些特性都是為了盡可能地保證程序安全而設(shè)計(jì)的,但是有些時(shí)候這些特性也會(huì)在編碼時(shí)給我們帶來不少的麻煩,下面我們來了解伴隨對(duì)象的初始化
    2022-11-11
  • Android指紋解鎖方法解析

    Android指紋解鎖方法解析

    這篇文章主要為大家詳細(xì)解析了Android指紋解鎖方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android 高仿斗魚滑動(dòng)驗(yàn)證碼

    Android 高仿斗魚滑動(dòng)驗(yàn)證碼

    這篇文章主要介紹了Android 高仿斗魚滑動(dòng)驗(yàn)證碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Android編程單擊圖片實(shí)現(xiàn)切換效果的方法

    Android編程單擊圖片實(shí)現(xiàn)切換效果的方法

    這篇文章主要介紹了Android編程單擊圖片實(shí)現(xiàn)切換效果的方法,以實(shí)例形式分析了Android布局及切換功能的具體實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 詳解Android?GLide圖片加載常用幾種方法

    詳解Android?GLide圖片加載常用幾種方法

    這篇文章主要為大家介紹了詳解Android?GLide圖片加載常用幾種方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

南郑县| 太和县| 巨野县| 东丽区| 凭祥市| 拜泉县| 英德市| 日喀则市| 红安县| 增城市| 长寿区| 大方县| 云南省| 思南县| 甘孜县| 衡阳市| 五台县| 永寿县| 淄博市| 巴中市| 民县| 信丰县| 房山区| 息烽县| 竹山县| 南城县| 鲁山县| 万荣县| 西吉县| 辉南县| 黎平县| 清新县| 克拉玛依市| 巩义市| 天水市| 陕西省| 崇义县| 永仁县| 莱芜市| 赞皇县| 黄平县|