仿qq联系人分层list&&分组悬浮向上滚动效果 最简化demo
来源:互联网 发布:上瘾网络剧全集下载 编辑:程序博客网 时间:2024/05/16 17:04
最近比较闲,自己整理点比较常用的demo简单分析下 给以后留个思路。。。侧重思路,代码质量会比较差,。。github上有不少大神封装好的开源组件,大家可以去上面找找,会有惊喜的。。
好吧,先来个通讯录的。。
之前一直以为是list套list会比较麻烦,现在才发现原来还比较简单,其实就是个list,只是每个item中都有个相当于分层的模块,默认为gone。当检测到上下两个item的
首字母不同的时候,就让为gone的模块显示出来,就好啦。
浮动的效果我的思路是:
将想要浮动效果的view单独拿出来,跟listview 平齐放置,当监测到listview 滚动的时候,让浮动view显示出来,并显示跟最上层listite相关的内容。当停止滚动的时候,浮动view消失不见。
这样大概就实现了效果(不知道别人怎么弄的。。),具体效果可以自行定义。
直接上代码
package com.temp;import java.util.Arrays;import java.util.Comparator;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.animation.AlphaAnimation;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;public class TempActivity extends Activity {// 测试 分层listListView listView;String[] ss = { "01", "12", "71", "21", "31", "91", "51", "19", "55", "38","24", "01", "41", "81", "88", "27" };LayoutInflater layoutInflater;TextView headerText;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.testlist);//浮动view 这里只有个textheaderText=(TextView) findViewById(R.id.header);listView = (ListView) findViewById(R.id.list);layoutInflater = getLayoutInflater();sortString();listView.setAdapter(new Adapter());//控制浮动view的显示listView.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stub//为0表示停止,非0 滚动if (scrollState==0) {headerText.setVisibility(View.GONE);AlphaAnimation alphaAnimation=new AlphaAnimation(1.0f, 0.0f);alphaAnimation.setDuration(300);headerText.setAnimation(alphaAnimation);alphaAnimation.start();}else {headerText.setVisibility(View.VISIBLE);AlphaAnimation alphaAnimation=new AlphaAnimation(0.0f, 1.0f);alphaAnimation.setDuration(300);headerText.setAnimation(alphaAnimation);alphaAnimation.start();}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stubheaderText.setText(getIndex(ss[firstVisibleItem]));}});}private void sortString() {Arrays.sort(ss, new CustomComparator());};class CustomComparator implements Comparator<String> {public int compare(String str1, String str2) {int name1 = Integer.parseInt(str1);int name2 = Integer.parseInt(str2);return name1 - name2;}}private class Adapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn ss.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder;if (convertView == null) {convertView = layoutInflater.inflate(R.layout.list_item, null);holder = new ViewHolder();holder.name = (TextView) convertView.findViewById(R.id.name);holder.alapha = (TextView) convertView.findViewById(R.id.index);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.name.setText(ss[position]);// 判断当前 index 跟上个index 有无区别String currentStr = getIndex(ss[position]);String previousStr = (position - 1) >= 0 ? getIndex(ss[position-1]) : " ";if (!currentStr.equals(previousStr)) {holder.alapha.setText(currentStr);holder.alapha.setVisibility(View.VISIBLE);} else {holder.alapha.setVisibility(View.GONE);}return convertView;}class ViewHolder {TextView alapha;TextView name;}}private String getIndex(String str){return str.trim().substring(0, 1).charAt(0)+"";};}
testlist.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextViewandroid:id="@+id/header"android:layout_width="fill_parent" android:layout_height="wrap_content"android:textColor="#99CCFF"android:textSize="25sp"android:layout_marginLeft="10dip"android:background="#666666"android:visibility="gone" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="none" /></RelativeLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"><TextViewandroid:id="@+id/index"android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#333333"android:textColor="#99CCFF"android:textAppearance="?android:textAppearanceMedium"android:visibility="gone" /> <TextView android:id="@+id/name" android:textAppearance="?android:textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="6.0dip" android:layout_below="@id/index" /></RelativeLayout>
参考博客 http://www.cnblogs.com/xiaoQLu/archive/2011/12/20/2293732.html
- 仿qq联系人分层list&&分组悬浮向上滚动效果 最简化demo
- Android 仿QQ联系人,分组悬浮,展开停至特定项
- android 仿qq好友列表分组效果及联系人分组效果
- Android仿QQ联系人分组悬停
- iOS仿QQ分组效果
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android仿联系人列表分组悬浮列表,PinnedHeaderListView源码解析
- android仿qq分组列表效果
- 仿QQ好友列表分组折叠效果
- Android 仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- 可收缩分组表格(仿QQ联系人界面)
- android中listview仿qq群组向上滚动特效
- ANDROID中LISTVIEW仿QQ群组向上滚动特效
- ANDROID中LISTVIEW仿QQ群组向上滚动特效
- NDROID中LISTVIEW仿QQ群组向上滚动特效
- libcurl库的使用
- 解决新版本CVSNT中“no such repository”问题。
- news
- bootmgr is compressed
- Android 事件传递机制解析
- 仿qq联系人分层list&&分组悬浮向上滚动效果 最简化demo
- maven中snapshot快照库和release发布库的区别和作用
- 《梦李白·其一》 作者:杜甫
- 求一个数的平方根
- CTS android.animation包错误
- java 发送邮件
- 了解网络视频H.264的播放
- Dark Channel Prior的Matlab代码
- 大数据时代 如何让营销更精准?