android:gravity="right|center_vertical"
app:layout_constraintVertical_chainStyle="packed"
<item name="android:windowLightStatusBar">true</item>
android:maxLines="6"
android:ellipsize="end"
gradle Module dependencies의 implementation 'com.google.android.material:material:1.4.0'
remoteConfig.fetchAndActivate().addOnCompleteListener { //remoteConfig가 fetch를 완료하는것
progressBar.visibility = View.GONE
classpath "com.google.gms:google-services:4.3.5"
implementation platform('com.google.firebase:firebase-bom:29.0.0') //알아서 호환성이 맞는 버전을 사용하게 함
implementation 'com.google.firebase:firebase-config-ktx' //이 프로젝트에 필요한 원격구성 의존성
implementation 'com.google.firebase:firebase-analytics-ktx' //기본 셋업
json(java script object notation)
경량화된 데이터교환 방식
이름과 값으로 구분, 배열로도 표현이 가능
못했을때 보여줄만한 기본값이 없기 떄문에
실무에서는 setDefultAsync는 많이 사용하지만, 여기서는 안함
viewPager.setPageTransformer { page, position -> //kotlin이라 lambda로 가능
when {
position.absoluteValue >= 0.5F -> { //절댓값으로 표현한, 화면 좌우 0.5칸 밖인경우
page.alpha = 0F //투명하게
}
position == 0F -> { //화면중앙이라면
page.alpha = 1F //완전히 보이기
}
else -> { //화면 중앙에서 좌우 0.5칸 안인경우
page.alpha = 1F - 2 * position.absoluteValue
}
}
}
override fun getItemCount() = Int.MAX_VALUE //최대 int만큼
override fun onBindViewHolder(holder: QuoteViewHoler, position: Int) {
val actualPosition = position % quotes.size //실제 위치에서 명언 갯수로 나누게 되면 해당위치의 값을 넣을 수 있음
holder.bind(quotes[actualPosition], isNameRevealed) //해당 위치의 명언을 가져옴
}
//부드럽게 넘어가는 스크롤은 안되게, maxValue값의 반만큼 좌우로 뷰갯수 생성
viewPager.setCurrentItem(adapter.itemCount / 2, false)