项目地址:BCsl/GalleryLayoutManager
简介:用自定义 LayoutManager 实现 Android 中 Gallery 或者 ViewPager 控件的效果,支持 RecycleView 的试图回收机制
标签:ViewPager-Gallery-RecycleView-LayoutManager-viewpagerd的另一种实现-
中文
A custom LayoutManager to build a Gallery or a ViewPager like RecyclerView that shows items in a center-locked and support both HORIZONTAL and VERTICAL scroll.And View Recycle Machine is also supported.
Gradle
compile 'github.hellocsl:GalleryLayoutManager:{lastest-release-version}'
Be care :if you have used
RecyclerView
in your project , maybe your should use this library as below and your recyclerview-v7 requires API level 24.2.0 or higher
compile ('github.hellocsl:GalleryLayoutManager:{lastest-release-version}'){
exclude group: 'com.android.support', module:'recyclerview-v7'
}
Basis Usage
Use GalleryLayoutManager#attach(RecycleView recycleView)
to setup GalleryLayoutManager
for your RecycleView
instead of RecycleView#setLayoutManager(LayoutManager manager)
GalleryLayoutManager layoutManager = new GalleryLayoutManager(GalleryLayoutManager.HORIZONTAL);
//layoutManager.attach(mPagerRecycleView); default selected position is 0
layoutManager.attach(mPagerRecycleView, 30);
//...
//setup adapter for your RecycleView
mPagerRecycleView.setAdapter(imageAdapter);
Listen to selection change
layoutManager2.setCallbackInFling(true);//should receive callback when flinging, default is false
layoutManager.setOnItemSelectedListener(new GalleryLayoutManager.OnItemSelectedListener() {
@Override
public void onItemSelected(RecyclerView recyclerView, View item, int position) {
//.....
}
});
Apply ItemTransformer just like ViewPager
Implements your ItemTransformer
public class ScaleTransformer implements GalleryLayoutManager.ItemTransformer {
@Override
public void transformItem(GalleryLayoutManager layoutManager, View item, float fraction) {
item.setPivotX(item.getWidth() / 2.f);
item.setPivotY(item.getHeight()/2.0f);
float scale = 1 - 0.3f * Math.abs(fraction);
item.setScaleX(scale);
item.setScaleY(scale);
}
}
// Apply ItemTransformer just like ViewPager
layoutManager.setItemTransformer(new ScaleTransformer());