av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Android RecycleView滑動停止后自動吸附效果的實現代碼(滑動定位)

瀏覽:72日期:2022-09-21 18:33:26

最近有個需求 要求列表 滑動后第一條 需要和頂部對齊上網找了找 發現 官方支持 Recycle + LinearSnapHelper 可以實現但我實際操作加上后 發現會卡頓 滑動卡頓 沒有以前那種流暢感了

想了想 算了 懶得看源碼 還是自己寫一個得了

效果圖 :

Android RecycleView滑動停止后自動吸附效果的實現代碼(滑動定位)

代碼如下 注釋很清楚了

package com.example.testapp import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.recyclerview.widget.LinearLayoutManagerimport androidx.recyclerview.widget.RecyclerViewimport com.example.testapp.code.note.JoinDataimport com.example.testapp.code.note.TheatreJoinerAdapterimport 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)//二次滑動 } } }}

結束

到此這篇關于Android RecycleView滑動停止后自動吸附效果的實現代碼(滑動定位)的文章就介紹到這了,更多相關Android RecycleView滑動定位內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 久久中文一区二区 | 日韩一级 | 中文字幕日韩一区二区 | 四虎影音| 久久久久国产一级毛片 | 99免费在线观看 | 午夜精品视频一区 | 亚洲精品自在在线观看 | 91一区二区三区在线观看 | 日本免费视频在线观看 | 一区二区三区不卡视频 | 亚洲成人一区 | 国产精品高清在线 | 国产成人免费视频网站高清观看视频 | 作爱视频免费观看 | 成人免费视频网站在线观看 | av一区二区三区 | 国产精品成人69xxx免费视频 | 成年视频在线观看 | 免费观看日韩精品 | 亚洲www. | 亚洲精品女优 | 91成人精品 | yeyeav| 欧美一区二区三区在线免费观看 | 国产区精品 | 亚洲国产精品一区二区第一页 | 久久精品国产久精国产 | 国产成人久久 | 成人免费视频在线观看 | 免费在线看黄 | 蜜桃臀av一区二区三区 | 成人伊人网 | 龙珠z国语版在线观看 | www.日韩| 日韩综合色 | 国产精品亚洲视频 | 国产在线视频一区 | 中文字幕av在线播放 | 男女视频在线观看免费 | 久久伊人青青草 |