Android實現固定頭部資訊,擠壓動畫(類似通訊錄)

來源:互聯網
上載者:User

標籤:pinnedheaderlistview   擠壓動畫   固定頭部資訊   

半年前,那時候我還是個大四的學生,每天都在找工作度過,想去北京體驗一下蟻族生活,奮然離開了濟南,哎...在濟南我們學校還是數得著的好學校,去了北京就什麼都不是了,一切的辛酸只有自己知道,那時候的我只找開發方面的工作,也第一次體會到了女生的劣勢...

在找工作的過程中,大部分都是實習,跟我的預想有點衝突,去了XX集團,人家只要211,985的,沒辦法,去了XX工廠收到了類似通訊錄的這麼個任務...


廢話少說,開始今天的主題

在很多應用中,看到這樣的listview:listview滑動過程中分組標題固定在上方,當第二個組滑上來時,第一個組才跟著上滑,下一個組固定,直到該組也滑出上邊緣。

有位大神們寫的比較高深,可以去借鑒一下http://blog.csdn.net/guolin_blog/article/details/9033553

由於我比較菜鳥,所以方法比較簡單,但實現的功能差不多,主要使用了git上的源碼,直接拿來調用了

1.從github上下載源碼,http://blog.csdn.net/guolin_blog/article/details/9033553

2.把PinnedHeaderListView中的library匯入項目中

3.建立項目,並引用library

大概內容就這些,下面簡單介紹一下代碼:

1.在MainActivity的布局檔案中加入以下代碼:

給個小技巧,按住shift+ctrl+T,輸入PinnedHeaderListView就能找到za.co.immedia.pinnedheaderlistview.PinnedHeaderListView,直接寫進去就可以

<za.co.immedia.pinnedheaderlistview.PinnedHeaderListView        android:id="@android:id/list"        android:layout_width="match_parent"        android:layout_height="match_parent"/>

2.其實PinnedHeaderListView繼承的ListView,所以用法也差不多,下一步就需要寫Adapter了,個人習慣比較喜歡自訂,可以按照自己的想法來寫,但是適配器要繼承SectionedBaseAdapter

/** *  */package com.thea.pinnedsectiondemo.adapter;import java.util.List;import com.thea.pinnedsectiondemo.R;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;import za.co.immedia.pinnedheaderlistview.SectionedBaseAdapter;/** * @author thea * * 2014-10-16 */public class MyPinnedListViewAdapter extends SectionedBaseAdapter{private List<String> sectionList;private List<String> list;private Context context;public MyPinnedListViewAdapter(Context context,List<String> sectionList, List<String> list) {super();this.sectionList = sectionList;this.list = list;this.context = context;}@Overridepublic Object getItem(int section, int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int section, int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int getSectionCount() {// TODO Auto-generated method stubreturn sectionList.size();}@Overridepublic int getCountForSection(int section) {// TODO Auto-generated method stubreturn list.size();}@Overridepublic View getItemView(int section, int position, View convertView,ViewGroup parent) {ViewHold hold=null;if (convertView==null) {hold=new ViewHold();convertView=LinearLayout.inflate(context, R.layout.list_item, null);hold.tv_item=(TextView) convertView.findViewById(R.id.tv_item);convertView.setTag(hold);} else {hold=(ViewHold) convertView.getTag();}hold.tv_item.setText(list.get(position));return convertView;}@Overridepublic View getSectionHeaderView(int section, View convertView,ViewGroup parent) {ViewHold hold=null;if (convertView==null) {hold=new ViewHold();convertView=LinearLayout.inflate(context, R.layout.section_item, null);hold.tv_section=(TextView) convertView.findViewById(R.id.tv_section_item);convertView.setTag(hold);} else {hold=(ViewHold) convertView.getTag();}hold.tv_section.setText(sectionList.get(section));return convertView;}class ViewHold{private TextView tv_section,tv_item;}}

3.剩下的就是MainActivity,其實就跟ListView的使用都一樣了,這裡就不貼代碼了

ok,完成

源碼:http://download.csdn.net/detail/elinavampire/8047885


Android實現固定頭部資訊,擠壓動畫(類似通訊錄)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.