用自定义 LayoutManager 实现 Android 中 Gallery 或者 ViewPager 控件的效果,支持 RecycleView 的试图回收机制

GalleryLayoutManager

项目地址: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.

Screenshots

用自定义 LayoutManager 实现 Android 中 Gallery 或者 ViewPager 控件的效果,支持 RecycleView 的试图回收机制_第1张图片

Usage

1、Build

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'
}

2、In your code

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());

你可能感兴趣的:(Android,不错文章转载)