Android实现固定头部信息,挤压动画(类似通讯录)

半年前,那时候我还是个大四的学生,每天都在找工作度过,想去北京体验一下蚁族生活,奋然离开了济南,哎...在济南我们学校还是数得着的好学校,去了北京就什么都不是了,一切的辛酸只有自己知道,那时候的我只找开发方面的工作,也第一次体会到了女生的劣势...

在找工作的过程中,大部分都是实习,跟我的预想有点冲突,去了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;
	}

	@Override
	public Object getItem(int section, int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int section, int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int getSectionCount() {
		// TODO Auto-generated method stub
		return sectionList.size();
	}

	@Override
	public int getCountForSection(int section) {
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public 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;
	}

	@Override
	public 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

时间: 2025-01-03 18:40:56

Android实现固定头部信息,挤压动画(类似通讯录)的相关文章

Android实现固定头部信息,挤压动画(相似通讯录)

半年前,那时候我还是个大四的学生,每天都在找工作度过,想去北京体验一下蚁族生活,奋然离开了济南,哎...在济南我们学校还是数得着的好学校,去了北京就什么都不是了,一切的辛酸仅仅有自己知道,那时候的我仅仅找开发方面的工作,也第一次体会到了女生的劣势... 在找工作的过程中,大部分都是实习,跟我的预想有点冲突,去了XX集团,人家仅仅要211,985的,没办法,去了XX工厂收到了类似通讯录的这么个任务... 废话少说,開始今天的主题 在非常多应用中,看到这种listview:listview滑动过程中

Android系统联系人全特效实现(上),分组导航和挤压动画

本文首发于CSDN博客,转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9033553 记得在我刚接触Android的时候对系统联系人中的特效很感兴趣,它会根据手机中联系人姓氏的首字母进行分组,并在界面的最顶端始终显示一个当前的分组.如下图所示: 最让我感兴趣的是,当后一个分组和前一个分组相碰时,会产生一个上顶的挤压动画.那个时候我思考了各种方法想去实现这种特效,可是限于功夫不到家,都未能成功.如今两年多过去了,自己也成长了很多,

Android 实现用户列表信息滑动删除功能和选择删除功能

在项目开发过程中,常常需要对用户列表的信息进行删除的操作.Android中常用的删除操作方式有两种 ,一种就是类似微信的滑动出现删除按钮方式,还有一种是通过CheckBox进行选择,然后通过按钮进行删除的方式.本来的实例集成上述的两种操作方式来实现用户列表删除的效果. 设计思路:在适配器类MyAdapter一个滑动删除按钮显示或隐藏的Map,一个用于CheckBox是否选中的Map和一个与MainAcitivyt进行数据交互的接口ContentsDeleteListener,同时该接口包含两个方

【转】android 自定义ViewPager,修改原动画

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如何改变ViewPager 切换时的效果,实现个性化的图片切换~~ 看一下这样效果的图片切换: 是

Android UI- PullToRrefresh自定义下拉刷新动画

Android UI- PullToRrefresh自定义下拉刷新动画 如果觉得本文不错,麻烦投一票,2014年博客之星投票地址:http://vote.blog.csdn.net/blogstar2014/details?username=wwj_748#content 本篇博文要给大家分享的是如何使用修改开源项目PullToRrefresh下拉刷新的动画,来满足我们开发当中特定的需求,我们比较常见的一种下拉刷新样式可能是以下这种: 就是下拉列表的时候两个箭头上下翻转,更改日期文本和刷新状态,

Midnight.js – 实现奇妙的固定头部切换效果

Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换固定头的效果. 在线演示      插件下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12款经典的白富美型 jQu

HTTP消息中header头部信息的讲解

本文导读:HTTP 消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体 组成.HTTP的头域包括通用头,请求头,响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. HTTP Request的Header信息 1.HTTP请求方式 如下表: GET 向Web服务器请求一个文件 POST 向Web服务器发送数据让Web服务器进行处理 PUT 向Web服务器发送数据并存储在Web服务器内

android一个弹出菜单的动画(一)

先上效果图: 先写Layout文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent&quo

HTTP 头部信息和错误码汇总详细解释,必收藏!

最近在调试 前后端分离的请求测试,遇到了一个406错误, 无法接受,于是开始了人肉搜索406 最后 还是HTTP头部信息里的 Accept:application/json  这个Accept 导致的, 后端设置了只允许application/json 这种形式,so前端模拟请求的时候,你也要和后端沟通好,然后发送请求参数,就可以了! 正好,也忘得差不多了,下面我们就来总结和回顾一下HTTP 的一些参数 和错误码等等 前端不懂HTTP协议就等于废了一条腿, 跑不快,飞不高! GO!!! 本文为多