android 무한 순환 윤방 실현
2391 단어 학습 노트
이주 핵심은 바로 recyclerview이다. 그 자체에 smoothScrollToPosition()이 지정된 위치로 미끄러진다. 그러나 이 과정은 매우 빠르고 우리가 원하는 효과가 아니다. 이 방법에서 최종적으로 호출된 것은 LinearLayoutManager의 smoothScrollToPosition() 방법이다. 그래서 우리는 LinearLayoutManager의 smoothScrollToPosition() 방법을 다시 써서 미끄러지는 속도를 제어해야 한다.다음 코드:
import android.content.Context
import android.graphics.PointF
import android.util.DisplayMetrics
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
class AutoScrollLayoutManager(context: Context?) : LinearLayoutManager(context) {
//
override fun smoothScrollToPosition(recyclerView: RecyclerView, state: RecyclerView.State, position: Int) {
val linearSmoothScroller: LinearSmoothScroller = object : LinearSmoothScroller(recyclerView.context) {
override fun computeScrollVectorForPosition(targetPosition: Int): PointF? {
return [email protected](targetPosition)
}
override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
// , ;
return 40f / displayMetrics.density
}
}
linearSmoothScroller.targetPosition = position
startSmoothScroll(linearSmoothScroller)
}
}
3주 계속 굴러가기 위해서는 adapter에서 itemCount를 Int.MAX 로 되돌려야 합니다VALUE:
override fun getItemCount(): Int {
return if (mDataList.isNotEmpty()) Int.MAX_VALUE else 0
}
삼주 그리고 일반적인 Linear Layout Manager처럼 Recyclerview에 설정하고 Recyclerview에 Adapter를 설정한 후 Recyclerview를 호출합니다.smoothScrollToPosition(Int.MAX VALUE), 빨간색은 Int의 최대치, 즉 계속 굴러가는 것을 주의해야 한다. 그러면 문제가 생겼다. 데이터는 유한하기 때문에 데이터 순환을 실현해야 한다. adapter의 onBindViewHolder(holder: RecyclerView. ViewHolder,position: Int) 방법에서 우리는 사용자 정의 index로 다음 위치의 데이터 대상을 얻는다.index가 데이터 수량의 길이일 때마다 다시 순환해야 한다고 설명하기 때문에 index를 0으로 다시 설정합니다. 코드는 다음과 같습니다.
var index = 0
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (index % (mDataList.size - 1) == 0){
//
index = 0
}
val horizontalGame = mDataList[index++]
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STL 학습노트(6) 함수 객체모방 함수는 모두pass-by-value이다 함수 대상은 값에 따라 전달되고 값에 따라 되돌아오기 때문에 함수 대상은 가능한 한 작아야 한다(대상 복사 비용이 크다) 함수 f와 대상 x, x 대상에서 f를 호출하면:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.