-
Notifications
You must be signed in to change notification settings - Fork 0
Issue #24
dongk00 edited this page Feb 18, 2022
·
1 revision
viewpager adapter로 일반 recyclerview adapter 사용
fragmentstateadapter vs recyclerviewadapter 차이 => fragmentstateadapter에서는 하나하나의 fragment들을 항목으로 넣기 때문에 한 페이지에 다소 많은 기능이 필요할 때 유용 recyclerview adapter는 recyclerview처럼 사용하기 때문에 간단하고 반복적인 기능을 넣을 때 유용
val adapter = MonthlyCardAdapter(backgroundList)
binding.monthlyCard.adapter = adapter
binding.monthlyCard.offscreenPageLimit = 3 //양쪽 사이드에 항목이 보임
binding.monthlyCard.getChildAt(0).overScrollMode = View.OVER_SCROLL_NEVER
val transform = CompositePageTransformer()
transform.addTransformer(MarginPageTransformer(8))
transform.addTransformer { view: View, fl: Float ->
val v = 1 - abs(fl)
view.scaleY = 0.8f + v * 0.2f
}
binding.monthlyCard.setPageTransformer(transform)
<viewpager attribute>
android:clipToPadding="false"
android:clipChildren="false"
+ margin
gridlayout spansize 7의 recyclerview adapter를 생성 총 갯수는 42개
val startIndex = cal.get(Calendar.DAY_OF_WEEK) - 1
val lastIndex = startIndex + cal.getActualMaximum(Calendar.DATE) - 1
calendar를 측정하고자 하는 년 월을 설정하고 1일로 맞춘 후 그 날의 요일을 가져온다(일:1, 월:2 , ... , 토:7) 그 날의 요일 - 1 이 시작하는 index이다. 시작 index + 그 달의 마지막 날 - 1이 마지막 index이다.
private val openAnim = TranslateAnimation(
0f,
0f,
0f,
binding.monthlyWritingExpandedLayout.height.toFloat()
).also {
it.duration = 400
}
private val closeAnim = TranslateAnimation(
0f,
0f,
binding.monthlyWritingExpandedLayout.height.toFloat(),
0f
).also {
it.duration = 400
}
기존 Recyclerview 에 추가
private val differCallback = object: DiffUtil.ItemCallback<DailyWritingItem>(){
override fun areItemsTheSame(oldItem: DailyWritingItem, newItem: DailyWritingItem): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: DailyWritingItem, newItem: DailyWritingItem): Boolean {
return oldItem == newItem
}
}
val differ = AsyncListDiffer(this,differCallback)
list는 differ.submitlist(list)로 전달 recyclerview 내에서는 differ.currentlist를 사용
override fun getItemCount(): Int = differ.currentList.size
val item = differ.currentList[adapterPosition]