Skip to content

Full aspect ratio grid LayoutManager for Android's RecyclerView

License

Notifications You must be signed in to change notification settings

500px/greedo-layout-for-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0fb5b29 · Jun 21, 2022

History

96 Commits
Jun 9, 2022
Jun 9, 2022
Jun 21, 2022
Jun 21, 2022
Feb 25, 2016
Feb 26, 2016
Feb 5, 2016
Sep 14, 2020
Jun 9, 2022
Jun 9, 2022
Feb 24, 2016
Feb 24, 2016
Feb 25, 2016
Feb 24, 2016

Repository files navigation

Greedo Layout for Android

A drop-in custom layout manager for Android RecyclerViews to layout a grid of photos while respecting their aspect ratios.

image

Setup

Download the latest release via Gradle:

repositories {
	maven { url 'https://github.com/500px/greedo-layout-for-android/raw/master/releases/' }
}

dependencies {
	compile 'com.fivehundredpx:greedo-layout:1.5.1'
}

Usage

See the sample project for a complete solution on how to use GreedoLayout. Below are the specific steps.

// Create an instance of the GreedoLayoutManager and pass it to the RecyclerView
MyRecyclerAdapter recyclerAdapter = new MyRecyclerAdapter(this);
GreedoLayoutManager layoutManager = new GreedoLayoutManager(recyclerAdapter);

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(recyclerAdapter);

// Set the max row height in pixels
layoutManager.setMaxRowHeight(300);

// If you would like to add spacing between items (Note, MeasUtils is in the sample project)
int spacing = MeasUtils.dpToPx(4, this);
recyclerView.addItemDecoration(new GreedoSpacingItemDecoration(spacing));

And then, in your RecyclerView adapter, or some other class of your choosing, implement SizeCalculatorDelegate. This implementation got passed to the layout manager above.

public class MyRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> implements SizeCalculatorDelegate {
    @Override
    public double aspectRatioForIndex(int index) {
    	// Return the aspect ratio of your image at the given index
    }
}

License

GreedoLayout is released under the MIT license. See LICENSE for details.