Android RecycleView 슬라이딩 정지 후 자동 흡착 효과 구현 코드(슬라이딩 위치)
3161 단어 AndroidRecycleView슬라이딩 포 지 셔 닝흡착
인터넷 에서 찾다 공식 지원 휴지통 발견+ LinearSnapHelper 는 실현 할 수 있 습 니 다.
근 데 제 가 실 기 를 하 다가 렉 이 걸 리 더 라 고요.렉 이 걸 리 더 라 고요.렉 이 잘 안 걸 려 요.
생각 하 다 됐어.소스 보기 귀찮아. 혼자 쓰 는 게 낫 겠 다.
효과 그림:
코드 는 다음 과 같 습 니 다.주석 이 명확 합 니 다.
package com.example.testapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.testapp.code.note.JoinData
import com.example.testapp.code.note.TheatreJoinerAdapter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
//isUserControl
@Volatile
private var isUserControl = false
var runnable = Runnable {
smoothScrollToPosition()// rcy
}
val list = arrayListOf<JoinData>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
for (i in 0..50) {
list.add(JoinData(" ${i}", i))
}
rcy.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
var adapter = TheatreJoinerAdapter(this, list)
rcy.adapter = adapter
rcy.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(r: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(r, dx, dy)
//
if (r.scrollState == RecyclerView.SCROLL_STATE_SETTLING && !isUserControl) {//
// -3 .. 3
if (dy in -3..3) {//
r.stopScroll()
}
}
}
override fun onScrollStateChanged(r: RecyclerView, newState: Int) {
super.onScrollStateChanged(r, newState)
if (newState == RecyclerView.SCROLL_STATE_IDLE) {//
if (!isUserControl) {
rcy.postDelayed(runnable, 200)//200
}
}
if (r.scrollState != RecyclerView.SCROLL_STATE_SETTLING) {//
isUserControl = false
}
}
})
}
private fun smoothScrollToPosition() {
isUserControl = true
val stickyInfoView = rcy.getChildAt(0) // View view
val bottom = stickyInfoView.bottom// view rcy
val height = stickyInfoView.measuredHeight// view
if (bottom != height) {//
if (bottom >= (height / 2)) {// view
rcy.smoothScrollBy(0, -(height - bottom))//
} else {
rcy.smoothScrollBy(0, bottom)//
}
}
}
}
끝나다 안 드 로 이 드 Recycle View 슬라이딩 이 멈 춘 후 자동 흡착 효과 에 대한 구현 코드(슬라이딩 포 지 셔 닝)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 Recycle View 슬라이딩 포 지 셔 닝 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.