@NonNull private DividerItemDecoration getDivider() { Drawable dividerBackground = ContextCompat.getDrawable(getActivity(), R.drawable.dark_blue_divider); Collection<Layer> layers = LayersBuilder.with( new Layer(DividerBuilder.from(dividerBackground).erase(Direction.getVertical()).build()), new Layer(new HeaderSelector(), DividerBuilder.fromEmpty().with(dividerBackground, Direction.SOUTH).build())).build(); return new DividerItemDecoration(layers); }
private RecyclerView.ItemDecoration getItemDecoration() { Drawable blackDrawable = getResources().getDrawable(R.drawable.black_divider); Drawable greyDrawable = getResources().getDrawable(R.drawable.grey_divider); Collection<Layer> layers = LayersBuilder.with( new Layer(new AllItemsSelector(), DividerBuilder.get().with(greyDrawable).build()), new Layer(new EvenCellRowSelector(), DividerBuilder.get().with(blackDrawable).build())) .build(); return new DividerItemDecoration(layers); } }
private RecyclerView.ItemDecoration getItemDecoration(List<Movie> movies) { Drawable darkDrawable = getResources().getDrawable(R.drawable.movies_dark_divider); Drawable lightDrawable = getResources().getDrawable(R.drawable.movies_light_divider); Drawable highlightedDrawable = getResources().getDrawable(R.drawable.movies_highlight_divider); Layer defaultLayer = new Layer(DividerBuilder.from(lightDrawable).build()); Layer externalLayer = new Layer( new AllGroupSelector(), DividerBuilder.from(darkDrawable).build()); Layer highRatedLayer = new Layer( new HighRatingMovieSelector(movies, HIGH_RATING_THRESHOLD), DividerBuilder.from(highlightedDrawable).build()); Collection<Layer> layers = LayersBuilder.with(defaultLayer, externalLayer, highRatedLayer).build(); return new DividerItemDecoration(layers); } }
/** * Returns a new builder with the drawable applied to all the sides of the divider. */ public static DividerBuilder from(Drawable drawable) { DividerBuilder builder = new DividerBuilder(); builder.with(drawable); return builder; }
/** * Adds the eraser drawable to all the directions provided for the divider. */ public DividerBuilder erase(EnumSet<Direction> directions) { return with(Divider.ERASER, directions); }
/** * Returns the divider applied for the selected position taking into account * only the selectors for that position. * * @param position Position of the divider * @return Divider for the position, properly resolved */ private Divider getDivider(Position position) { Divider itemDivider = DividerBuilder.fromEmpty().build(); if (!position.isValid()) { return itemDivider; } int depth = 0; for (Layer layer : layers) { if (layer.isPositionSelected(position)) { itemDivider = itemDivider.override( layer.getDivider(), layer.getDirectionsByPosition(position), depth); } depth += 1; } return itemDivider; } }
/** * Returns a new builder with the eraser drawable applied to all the sides of the divider. */ public static DividerBuilder fromEmpty() { return from(Divider.ERASER); }
/** * Returns a new builder with no configuration. */ public static DividerBuilder get() { return new DividerBuilder(); }
/** * Adds the eraser drawable to all the sides of the divider. */ public DividerBuilder erase() { return with(Divider.ERASER); }
@NonNull private DividerItemDecoration getDivider() { Drawable dividerBackground = ContextCompat.getDrawable(getActivity(), R.drawable.dark_blue_divider); Collection<Layer> layers = LayersBuilder.with( new Layer(DividerBuilder.from(dividerBackground).erase(Direction.getVertical()).build()), new Layer(new HeaderSelector(), DividerBuilder.fromEmpty().with(dividerBackground, Direction.SOUTH).build())).build(); return new DividerItemDecoration(layers); }
/** * Adds the eraser drawable to the specific direction. */ public DividerBuilder erase(Direction direction) { return with(Divider.ERASER, direction); }