【开源】PagedHeadListView

PagedHeadListView

  •  https://github.com/JorgeCastilloPrz/PagedHeadListView

    介绍:

    如果你在寻找一个带ViewPager头部效果的ListView,这个库正是你所需要的。PagedHeadListView中你可以将自己的 fragment作为page放到ListView的header中,同时翻页的指示效果(page indicator)也会自动添加。你可以自定义page indicator 的显示效果(颜色,位置等)、ViewPager拖动时候的动画效果、以及headerView的触摸响应。PagedHeadListView最低版本支持API 11.

    运行效果:

 

使用说明:

xml中:别忘了加xmlns:pagedheadlistview="http://schemas.android.com/apk/res-auto"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:pagedheadlistview="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.jorgecastilloprz.pagedheadlistview.PagedHeadListView
        android:id="@+id/pagedHeadListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        pagedheadlistview:headerHeight="@dimen/header_height"
        pagedheadlistview:indicatorType="bottomAligned"
        pagedheadlistview:disableVerticalTouchOnHeader="true"
        pagedheadlistview:indicatorBgColor="@color/material_green"
        pagedheadlistview:indicatorColor="@color/material_light_green" />
</RelativeLayout>

 

java代码中:

1
2
3
4
5
6
7
8
9
10
11
12
13
mPagedHeadList = (PagedHeadListView) rootView.findViewById(R.id.pagedHeadListView);
mPagedHeadList.addFragmentToHeader(new FirstHeaderFragment());
mPagedHeadList.addFragmentToHeader(new SecondHeaderFragment());
mPagedHeadList.addFragmentToHeader(new ThirdHeaderFragment());
mPagedHeadList.addFragmentToHeader(new FourthHeaderFragment());
mPagedHeadList.addFragmentToHeader(new FifthHeaderFragment());
mPagedHeadList.setHeaderOffScreenPageLimit(4);
mPagedHeadList.setHeaderPageTransformer(PageTransformerTypes.FLIP);
ArrayList<String> mockItemList = new ArrayList<String>();
for (int i = 0; i < 50; i++)
    mockItemList.add(getResources().getString(R.string.mock_item) + " " + (i+1));
MockListAdapter mockListAdapter = new MockListAdapter(getActivity(), R.layout.mock_list_item, mockItemList);
mPagedHeadList.setAdapter(mockListAdapter);

 

一些方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Types vaiable: DEPTH, ZOOMOUT, ROTATE, SCALE, FLIP, ACCORDION.
mPagedHeadListView.setHeaderPageTransformer(PageTransformerTypes pageTransformerType);
//This is a mapping for normal setPageTransformer from Android support ViewPager.
mPagedHeadListView.setHeaderPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer customPageTransformer);
//Dynamic mode to set header's view height. (Always in pixels)
mPagedHeadListView.setHeaderHeight(500);
mPagedHeadListView.setHeaderHeight(getResources().getDimensionPixelSize(R.dimen.header_height_test));
//For the user to be able to listen for header ViewPager events.
mPagedHeadListView.setOnHeaderPageChangeListener(ViewPager.OnPageChangeListener onPageChangeListener);
mPagedHeadListView.setHeaderOffScreenPageLimit(int offScreenPageLimit);
mPagedHeadListView.setIndicatorBgColor(int indicatorBgColor);
mPagedHeadListView.setIndicatorColor(int indicatorColor);
//If you want to disable vertical touch on header programatically.
mPagedHeadListView.disableVerticalTouchOnHeader();
mPagedHeadList.setIndicatorBgColor(getResources().getColor(R.color.material_green));
mPagedHeadList.setIndicatorColor(getResources().getColor(R.color.material_light_green));

自定义属性

1
2
3
4
5
6
pagedheadlistview:headerHeight: Dimen resources allowed.
pagedheadlistview:disableVerticalTouchOnHeader: Set it to true if you want the header to not be affected by verticall ListView scrolling.
pagedheadlistview:indicatorBgColor: Color resource for indicator background.
pagedheadlistview:indicatorColor: Color resource for indicator view.
pagedheadlistview:indicatorType: Type for the indicator. Types allowed are: topAligned, bottomAligned, and none. If you set the value to none, no indicator will be included.
pagedheadlistview:pageTransformer: You can set it to depth, zoomout, rotate, scale, flip, or accordion for using one of the stated ViewPager drag animations.

使用自定义的pageTransformer

1
mPagedHeadListView.setHeaderPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer customPageTransformer);

 

posted on 2015-04-01 16:04  wasdchenhao  阅读(206)  评论(0)    收藏  举报

导航