1. 程式人生 > >Android 仿美團選擇城市、微信通訊錄、餓了麼點餐列表的導航懸停分組索引列表

Android 仿美團選擇城市、微信通訊錄、餓了麼點餐列表的導航懸停分組索引列表

SuspensionIndexBar

簡介:快速實現分組懸停、右側索引導航聯動 列表。
如 美團選擇城市介面,微信通訊錄介面、餓了麼點餐介面等。

SuspensionIndexBar

相關博文:

喜歡隨手點個star 多謝

在哪裡找到我:

我的github:

我的CSDN部落格:

我的稀土掘金:

我的簡書:

效果一覽:

配合我另一個庫組裝的效果(SuspensionIndexBar + SwipeMenuLayout):

SwipeDelMenuActivity: image

高仿美團選擇城市介面(MeituanSelectCityActivity):

image

高仿微信通訊錄介面(WeChatActivity):

image

普通城市列表介面(MainActivity):

image

引入

Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Step 2. Add the dependency

	dependencies {
	        compile 'com.github.mcxtzhang:SuspensionIndexBar:V1.0.0'
	}

使用說明:

更新記錄:

2016 11 29 :

  • 重構懸停分組,將TitleItemDecoration更名為SuspensionDecoration,資料來源依賴ISuspensionInterface介面。
  • 重構索引導航,將IndexBar對資料來源的操作,如排序,轉拼音等分離出去,以介面IIndexBarDataHelper通訊。
  • 有N多兄弟給我留言、加QQ問的:如何實現美團選擇城市列表頁面,
  • 新增一個不帶懸停分組的HeaderView(微信通訊錄介面)

2016 11 10 : 1 IndexBar也考慮了HeaderView不需要索引的情況:

        mIndexBar.setmPressedShowTextView(mTvSideBarHint)//設定HintTextView
                .setNeedRealIndex(true)//設定需要真實的索引
                .setmLayoutManager(mManager)//設定RecyclerView的LayoutManager
                .setmSourceDatas(mDatas)//設定資料
                .setHeaderViewCount(mWrapperAdapter.getHeaderViewCount());//設定HeaderView數量

2016 11 07 : 1 考慮了HeaderView不需要索引的情況,TitleItemDecoration增加了一個headerView的欄位和方法:

new TitleItemDecoration(this, mDatas).setHeaderViewCount(mWrapperAdapter.getHeaderViewCount())

2 暫時抽離TitleItemDecoration至lib包,並且以 介面形式接收資料 。

to do list

1 擴充套件 SuspensionDecoration 支援傳入layout or View。

閒言碎語

網上關於實現帶懸停分組頭部的列表的方法有很多,像我看過有主席的自定義ExpandListView實現的,也看過有人用一個額外的父佈局裡面套 RecyclerView/ListView+一個頭部View(位置固定在父佈局上方)實現的。 對於以上解決方案,有以下幾點個人覺得不好的地方:

  1. 現在RecyclerView是主流

  2. 在RecyclerView外套一個父佈局總歸是增加布局層級,容易overdraw,顯得不夠優雅。

  3. item佈局實現帶這種分類頭部的方法有兩種,一種是把分類頭部當做一種itemViewtype(麻煩),另一種是每個Item佈局都包含了分類頭部的佈局,程式碼里根據postion等資訊動態Visible,Gone頭部(佈局冗餘,item效率降低)。

況且Google為我們提供了ItemDecoration,它本身就是用來修飾RecyclerView裡的Item的,它的getItemOffsets() onDraw()方法用於為Item分類頭部留出空間和繪製(解決缺點3),它的onDrawOver()方法用於繪製懸停的頭部View(解決缺點2)。

而且更重要的是,ItemDecoration出來這麼久了,你還不用它

本文就利用ItemDecoration 打造 分組列表,並配有懸停頭部功能。

亮點預覽:新增多個ItemDecoration、它們的執行順序、ItemDecoration方法執行順序、ItemDecoration和RecyclerView的繪製順序

我們用ItemDecoration為RecyclerView打造了帶懸停頭部的分組列表。其實Android版微信的通訊錄介面,它的分組title也不是懸停的,我們已經領先了微信一小步(認真臉)~ 再看看市面上常見的分組列表(例如餓了麼點餐商品列表),不僅有懸停頭部,懸停頭部在切換時,還會伴有切換動畫。 關於ItemDecoration還有一個問題,簡單佈局還好,我們可以draw出來,如果是複雜的頭部呢?能否寫個xml,inflate進來,這樣使用起來才簡單,即另一種簡單使用onDraw和onDrawOver的姿勢。 so,本文開頭我們就先用兩節完善一下我們的ItemDecoration。然後進入正題:自定義View實現右側索引導航欄IndexBar,對資料來源的排序欄位按照拼音排序,最後將RecyclerView和IndexBar聯動起來,觸控IndexBar上相應字母,RecyclerView滾動到相應位置。(在螢幕中間顯示的其實就是一個TextView,我們set個體IndexBar即可) 由於大部分使用右側索引導航欄的場景,都需要這幾個固定步驟,對資料來源排序,set給IndexBar,和RecyclerView聯動等,所以最後再將其封裝一把,成一個高度封裝,因此擴充套件性不太高的控制元件,更方便使用,如果需要擴充套件的話,反正看完本文再其基礎上修改應該很簡單~。

本文摘要:

  1. 用ItemDecoration實現懸停頭部切換動畫
  2. 另一種**簡單使用onDraw()和onDrawOver()**的姿勢
  3. 自定義View實現右側索引導航欄IndexBar
  4. 使用TinyPinyin對資料來源排序
  5. 聯動IndexBar和RecyclerView。
  6. 封裝重複步驟,方便二次使用,並可定製導航資料來源

本文是這個系列的第三篇,不出意外也是終結篇。因為使用經過重構後的控制元件已經可以快速實現市面上帶 索引導航、懸停分組的列表介面了。 在前兩篇裡,我們從0開始,一步一步實現了仿微信通訊錄、餓了麼選餐介面。 (第一篇戳我 第二篇戳我) 這篇文章作為終結篇,和前文相比,主要涉及以下內容:

  • 重構懸停分組,將TitleItemDecoration更名為SuspensionDecoration,資料來源依賴ISuspensionInterface介面。
  • 重構索引導航,將IndexBar對資料來源的操作,如排序,轉拼音等分離出去,以介面IIndexBarDataHelper通訊。
  • 有N多兄弟給我留言、加QQ問的:如何實現美團選擇城市列表頁面,
  • 新增一個不帶懸停分組的HeaderView(微信通訊錄介面)

相關推薦

Android 仿選擇城市通訊錄列表導航懸停分組索引列表

SuspensionIndexBar簡介:快速實現分組懸停、右側索引導航聯動 列表。如 美團選擇城市介面,微信通訊錄介面、餓了麼點餐介面等。SuspensionIndexBar相關博文:喜歡隨手點個star 多謝在哪裡找到我:我的github:我的CSDN部落格:我的稀土掘金

Android】快速實現仿選擇城市介面,通訊錄介面

概述 本文是這個系列的第三篇,不出意外也是終結篇。因為使用經過重構後的控制元件已經可以快速實現市面上帶 索引導航、懸停分組的列表介面了。 在前兩篇裡,我們從0開始,一步一步實現了仿微信通訊錄、餓了麼選餐介面。 (第一篇戳我 第二篇戳我) 這篇文章作為終結

精品小程式原始碼demo推薦-仿

http://bbs.html51.com/t-554-1-1/ 精品微信小程式原始碼demo推薦-仿餓了麼點餐! 專案要求:1.產品展示2,點餐下單3,價格,配送等仿餓了麼點餐效果圖如下:仿餓了麼點餐微信小程式原始碼下載:

Android 仿網,探索ListView的A-Z字母排序功能實現選擇城市

記得在我剛開始接觸到美團網的時候就對美團網這個城市定位、選擇城市功能很感興趣,覺得它做得很棒。有如下幾個點: 一:實現ListView的A-Z字母排序功能 二:根據輸入框的輸入值改變來過濾搜尋結果,如果輸入框裡面的值為空,更新為原來的列表,否則為過濾資料列表

android 仿大眾點評滑動viewpager選單欄

部分圖片沒有找到,就隨便替代了一下,功能上面和美團類似,各位需要的可以在下載試試。 由於csdn上傳不了,改用git上傳在gitub上面。 git下載地址:https://github.com/Mfangming/Meituan.git MainAct

Android仿載入資料小人奔跑進度動畫對話方塊(附順豐快遞員奔跑效果)

我們都知道在Android中,常見的動畫模式有兩種:一種是幀動畫(Frame Animation),一種是補間動畫(Tween Animation)。幀動畫是提供了一種逐幀播放圖片的動畫方式,播放事先做好的影象,與gif圖片原理類似,就像是在放電影一樣。補間動畫可以實現View元件的移動、放大、縮小以及漸

iOS -(仿城市選擇器 + 自動定位 + 字母索引

今天給大家分享一個仿美團城市選擇器效果的;幾行程式碼即可將集三級城市選擇、定位、搜尋和字母索引於一身的城市選擇器整合到你的專案中,極其簡單輕便! JFCitySelector效果展示: JFCitySelector效果展示.gif JFCitySelector使用方法: 注意:因為此專案使用了Masonr

Android仿地址選擇

最近做了這個功能,分享一下,用的是百度地圖api,和美團外賣的地址選擇介面差不多,也就是可以搜尋或者滑動地圖展示地址列表給使用者選擇,看下效果圖先。                文章重點 1、展示地圖並定位到“我”的位置2、滑動

Android 仿懸浮購物車顯示隱藏

效果圖: 這是美團的效果 通過效果圖可以看到 靜止的時候是購物車圖示是顯示的,滑動的時候是隱藏一半並半透明顯示的。 這裡用到一個觸控反饋的方法dispatchTouchEvent MotionEvent.ACTION_DOWN://手指按下 Mot

Android 仿網,大眾點評購買框懸浮效果之修改版

我之前寫了一篇關於美團網,大眾點評的購買框效果的文章Android對ScrollView滾動監聽,實現美團、大眾點評的購買懸浮效果,我自己感覺效果並不是很好,如果快速滑動介面,顯示懸浮框的時候會出現一卡的現象,有些朋友說有時候會出現兩個佈局的情況,特別是對ScrollView

Android 仿網,大眾點評購買框懸浮效果,仿詳情頁,可下拉放大圖片,向上滾動圖片,鬆手有動畫

先看效果圖 直接上程式碼註釋都寫到程式碼裡面了: 自定義的ScrollView package mm.shandong.com.testmtxqcomplex.myui; import android.content.Context; import andro

Android仿外賣點菜聯動列表

Android高仿美團外賣點菜聯動列表效果 最近專案中有一個新增購物車的需求,需要做成美團外賣點菜聯動ListView的效果,可能有的朋友覺得這很簡單,不就是2個Listview點選事件聯動處理機制嗎?沒錯,基本思路就是這樣子,只是美團外賣點菜效果上有一種根據

Android仿訂單懸浮view

前言 又是清明雨上,折菊寄到你身旁,把你最愛的歌來輕輕唱。 簡介 今天訂餐無意中看到美團外賣有個顯示訂單進度的view,效果還不錯,便隨手寫了下。 效果圖 實現 這裡我們是繼承LinearLayout來實現的。 一 重寫onMeasur

仿實現城市定位。

package com.droid; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Ha

分析一下H5直播直播抓娃娃低延時的方案

毫秒 nginx 支持 rtmp 前端 延遲 時長 左右 html 微信直播,HTML5直播,主要方案有如下幾種: 1,基於hls切片直播,前前是應用的主流,服務器可以選fms,wowza,nginx,srs之類 優點:集成方便,支持度高,兼容性好,主流手都支持,是目前直播

通訊錄拉群通訊錄ipad協議WXID爆粉協議手機號碼資料精準吸粉平臺

大資料時代營銷法則,得微信得財富,得雲控者,得天下      這裡給大家介紹爆粉之外更加暴力的通訊錄拉群,群營銷雲控系統。 在wxid爆粉之後更加暴力出來營銷系統,在微信限制5000好友以來,更加好的儲存客戶,營銷策略那無可置疑的是我們的群營銷。  

通訊錄通訊錄拉群ipad協議WXID爆粉協議手機號碼資料精準吸粉平臺

大資料時代營銷法則,得微信得財富,得雲控者,得天下 這裡給大家介紹爆粉之外更加暴力的通訊錄拉群,群營銷雲控系統。 在wxid爆粉之後更加暴力出來營銷系統,在微信限制5000好友以來,更加好的儲存客戶,營銷策略那無可置疑的是我們的群營銷。 我們商家有時候手裡有

高併發秒殺系統架構設計 · 搶購紅包一元奪寶

秒殺業務在各業務中已然非常流行,這裡我將網際網路行業中的秒殺定義為:在非常短的時間內,將一件商品分成多份進行購買的行為。微信搶紅包、一元奪寶、雙11大促搶購等業務本質上都可視作秒殺業務。而最近大熱的搶紅包的難度在於這是和錢打交道的秒殺場景,對於事務的要求性更高。秒殺業務的

最簡單的 QQ分享分享一鍵加QQ群 引入

一、前言 1、要使網頁內容得到更多的推廣,更加商業化,分享連結無疑是最好的選擇 2、bshare 可以簡單實現分享到QQ空間、新浪微博、人人網、騰訊微博、網易微博、更多平臺等 二、程式碼 <!DOCTYPE html> <htm

EasyNVR+EasyDSS實現簡單套路的RTMP直播錄影回放方案

安防領域HLS直播問題探討 近期外出交流比較多,在之前的一篇部落格《一種流量成本節省60%以上的手機直播微信直播H5直播幼兒園直播方案》我們說到了一種模式,就是當我們在做最近火熱的幼兒園直播平臺時,比較簡單的做法是在幼兒園內部會部署一臺工控機裝置,上面跑一個R