post-custom-banner

Epoxy를 사용하면서 SnapHelper를 사용할 일이 생겼다.

SnapHelper란 스크롤을 하는 순간에 아이템 한개씩 정렬되는 현상을 본 적이 있을것이다.

그것을 도와주기 위한 도구이다.

기본 Epoxy가 준비되었다는 가정하에 진행을 하겠다.

0.SnapHelper implementation

//snaphelper
    implementation 'com.github.rubensousa:gravitysnaphelper:2.2.2'
  1. CustomSnappingCarousel 만들기.
@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
class CustomSnappingCarousel @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Carousel(context, attrs, defStyleAttr) {

    fun setSnapHelper() {
        val snapHelper = GravitySnapHelper(Gravity.CENTER)
        snapHelper.attachToRecyclerView(this)
    }
}

2.EpoxyController에서 onBind를 통해 setSnapHelper()함수 달아주기

				
				//Carousel_()에서 변경한다.
	CustomSnappingCarouselModel_()
            .id("viewpagerList")
            .numViewsToShowOnScreen(1.1f)
            .models(viewpagerItem.map { viewpager ->
                HomeViewPagerModel_()
                    .id(viewpager.id)
                    .viewpager(viewpager)
            })
//추가되는 부분 onBind를 입력하고 Setting하기
// 추후에 Indicator를 실행	
            .onBind { _, view, _ ->
                view.setSnapHelper()
            }
            .addTo(this)
profile
러닝커브를 따라서 등반중입니다.
post-custom-banner

0개의 댓글