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

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

在找工作的过程中,大部分都是实习,跟我的预想有点冲突,去了XX集团,人家仅仅要211,985的,没办法,去了XX工厂收到了类似通讯录的这么个任务...

废话少说,開始今天的主题

在非常多应用中,看到这种listview:listview滑动过程中分组标题固定在上方。当第二个组滑上来时,第一个组才跟着上滑,下一个组固定,直到该组也滑出上边缘。

有位大神们写的比較高深,能够去借鉴一下http://blog.csdn.net/guolin_blog/article/details/9033553

因为我比較菜鸟,所以方法比較简单,但实现的功能差点儿相同,主要使用了git上的源代码,直接拿来调用了

1.从github上下载源代码,下载地址https://github.com/JimiSmith/PinnedHeaderListView

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

时间: 2024-10-17 01:49:18

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

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

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

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

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

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

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

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!!! 本文为多

http头部信息详解

打开一个网页(以淘宝网站为例)就会出现相对应的内容,这些内容是通过怎么样的方式展现在我们的面前呢?我们可以通过查看网页的http头部信息来获取相关的内容,如HTTP的请求报文与响应报文等,如下所示 1.General: Request URL:https://img.alicdn.com/tfs/TB1qfbtawMPMeJjy1XcXXXpppXa-160-56.gif ##请求的资源,可以是相对路径,也可以是完整的URL Request Method:GET ##请求方法,希望服务器端执行的

深入理解ajax系列第三篇——头部信息

前面的话 每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用.XHR对象提供了操作头部信息的方法.本文将详细介绍HTTP的头部信息 默认信息 默认情况下,在发送XHR请求的同时,还会发送下列头部信息 Accept: 浏览器能够处理的内容类型 Accept-Charset: 浏览器能够显示的字符集 Accept-Encoding: 浏览器能够处理的压缩编码 Accept-Language: 浏览器当前设置的语言 Connection: 浏览器与服务器之间连接的类型 Cookie: