欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一個吸頂Item的簡單實現方法分享

 更新時間:2019年09月07日 14:12:05   作者:susion  
這篇文章主要給大家介紹了一個吸頂Item的簡單實現方法,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧


一般的對于上圖樣式的Sticker我們使用CoordinatorLayout & AppBarLayout就可以說實現。

但是對于下面這種呢?

我的實現思路

首先整個頁面的UI結構是通過RecyclerView實現的。

對于上面這個Sticker的實現是在布局的最上方添加了一個和RecyclerView中要吸頂的Item一模一樣的布局。然后監(jiān)聽RecyclerView的滾動:

mPostDetailRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
 override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
  if (pageStatus == null || pageStatus.stickerPos == -1) return

  val preHolder = recyclerView.findViewHolderForAdapterPosition(pageStatus!!.stickerPos - 1)
  val targetHolder = recyclerView.findViewHolderForAdapterPosition(pageStatus!!.stickerPos)

  var offset = if (targetHolder != null) { //滾出去了
   -targetHolder.itemView.top
  }else{
   0
  }

  if (preHolder != null) {
   offset = -1 
  }

  if (offset < 0) {
   mPostDetailCommentHeaderSticker.visibility = View.GONE
  } else {
   mPostDetailCommentHeaderSticker.visibility = View.VISIBLE
  }
 }
}

上面pageStatus.stickerPos是Sticker在RecyclerView中的數據的位置。上面的邏輯寫的其實比較復雜,不過確實實現了需求(-_-), 我解釋一下:

即我判斷Sticker是否出現依賴于itemView.top和Sticker的前一個itemview:

  1. 如果當前的Sticker的 itemview顯示在RecyclerView中,則根據它itemView.top來判斷它是否滾動到了頂部
  2. 如果它的前一個itemview已經不在RecyclerView中了(被回收了),那說明它肯定滾出去了,這時直接顯示

上面的邏輯很奇怪,不過確實實現了吸頂的需求。

不過在后面的需求迭代中Sticker ItemView的前一個ItemView會不斷變化,于是上面這段代碼就出現了bug。。。。 那怎么解決呢?

更簡單通用的方法

最后靈機一動,對于StickerItemView的顯示我完全可以不依賴于前面這個ItemView:

mPostDetailRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
 override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
  val currentDataPos = recyclerView.getChildAdapterPosition(recyclerView.getChildAt(0))

  if (pageStatus != null && currentDataPos < pageStatus.stickerPos) {
   mPostDetailCommentHeaderSticker.visibility = View.GONE
  } else {
   mPostDetailCommentHeaderSticker.visibility = View.VISIBLE
  }
 }
})

上面這段代碼很輕松的修復了bug。并且它的邏輯很簡單,也很通用:

判斷當前RecyclerView顯示的第一個條目的位置是否大于StickerItem的位置,如果大于就展示吸頂Sticker

效果:

上面這種實現僅適用UI結構是RecyclerView的情況

PASS : 如果你就是這么做的,請無視我(-_-)

更多小分享 : AdvancedAndroid

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • Android 對話框sweet-alert-dialog

    Android 對話框sweet-alert-dialog

    這篇文章主要介紹了Android 對話框sweet-alert-dialog的相關資料,需要的朋友可以參考下
    2016-09-09
  • Flutter實現自定義搜索框AppBar的示例代碼

    Flutter實現自定義搜索框AppBar的示例代碼

    開發(fā)中,頁面頭部為搜索樣式的設計非常常見,為了可以像系統(tǒng)AppBar那樣使用,本文將利用Flutter自定義一個搜索框,感興趣的可以了解一下
    2022-04-04
  • 解決Android Studio突然不顯示logcat日志的問題

    解決Android Studio突然不顯示logcat日志的問題

    這篇文章主要介紹了解決Android Studio突然不顯示logcat日志的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Android實現秒表功能

    Android實現秒表功能

    這篇文章主要為大家詳細介紹了Android實現簡易秒表功能,具備啟停功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android?Bugreport實現原理深入分析

    Android?Bugreport實現原理深入分析

    這篇文章主要介紹了Android?Bugreport實現原理,Bugreport主要用于分析手機的狀態(tài),在應用開發(fā)中,程序的調試分析是日常生產中進程會進行的工作,Bugreport就是很常用的工具,需要的朋友可以參考下
    2024-05-05
  • Android應用中使用及實現系統(tǒng)“分享”接口實例

    Android應用中使用及實現系統(tǒng)“分享”接口實例

    為了應用的推廣、傳播,很多的應用中都有“分享”功能,這篇文章主要介紹了Android應用中使用及實現系統(tǒng)“分享”接口實例,有興趣的可以了解一下。
    2016-12-12
  • Android實現動態(tài)體溫計

    Android實現動態(tài)體溫計

    這篇文章主要為大家詳細介紹了Android實現動態(tài)體溫計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Android studio實現左右滑動切換圖片

    Android studio實現左右滑動切換圖片

    這篇文章主要為大家詳細介紹了Android studio實現左右滑動切換圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android證書安裝過程介紹

    Android證書安裝過程介紹

    大家好,本篇文章主要講的是Android證書安裝過程介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android實現同頻共幀動畫效果

    Android實現同頻共幀動畫效果

    我們聽過“同頻共振”,其原理是多個物體物體以同樣的頻率振動,但是本篇實現的效果是“同頻共幀”,含義是:動畫以同樣的頻率和同樣的幀展示在多個不同View上,文中通過代碼示例介紹的非常詳細,感興趣的同學可以自己動手嘗試一下
    2024-01-01

最新評論