HoverTab icon indicating copy to clipboard operation
HoverTab copied to clipboard

悬浮的tab(类似于ios使用UITableView实现的悬浮效果),并支持上拉、下拉刷新,结合PullToRefresh和Android-ObservableScrollView开源项目

HoverTab

悬浮的标题栏,并支持上拉、下拉刷新,结合PullToRefresh和Android-ObservableScrollView开源项目

Gradle可以通过以下方式引用:

   dependencies {
       compile 'com.zhonglushu.example:hovertab:1.0'
   }

  运行效果如下,可以是listview或者recyclerview, 头部图片部分是可以滚动的viewpager:

activity中的代码主要是设置一些header、adapter

        //headerview
        View adView = inflater.inflate(R.layout.header_layout, null);
        ViewPager viewPager = (ViewPager) adView.findViewById(R.id.header_pager);
        AdPagerAdapter pagerAdapter = new AdPagerAdapter();
        viewPager.setAdapter(pagerAdapter);
        //设置上图效果中的图片部分,可以是任意的布局
        setHoverHeaderView(adView);

        //tabview
        View tabview = inflater.inflate(R.layout.tab_layout, null);
        tab1 = tabview.findViewById(R.id.tab1);
        tab2 = tabview.findViewById(R.id.tab2);
        tab3 = tabview.findViewById(R.id.tab3);
        tab1.setOnClickListener(mListener);
        tab2.setOnClickListener(mListener);
        tab3.setOnClickListener(mListener);
        tab1.setSelected(true);
        //设置上图效果中的Tab部分,可以是自定义的tab布局也可以是support中的TabLayout控件(可以自己结合viewpager写逻辑),
        支持任意的布局,
        setHoverTabView(tabview);

        //设置viewpager的adapter
        setmPagerAdapter(new LocalPagerAdapter(this.getSupportFragmentManager()));

        //自己写tab和viewpager的逻辑,有利于适应不同的需求
        setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (position == 0) {
                    tab1.setSelected(true);
                    tab2.setSelected(false);
                    tab3.setSelected(false);
                } else if (position == 1) {
                    tab1.setSelected(false);
                    tab2.setSelected(true);
                    tab3.setSelected(false);
                } else if (position == 2) {
                    tab1.setSelected(false);
                    tab2.setSelected(false);
                    tab3.setSelected(true);
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        //启动activity时设置自动刷新auto refresh
        setManualRefreshing();

Fragment中的代码比较简单

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        final List<String> list = new ArrayList<String>();
        ...
        LocalAdapter mAdapter = new LocalAdapter(list);
        //设置listview或者recyclerview的adapter
        setListAdapter(mAdapter);
    }

    //(header)下拉刷新调用的函数
    @Override
    public void pullDownRefresh() {
        
    }
    
    //(footer)上拉刷新调用的函数
    @Override
    public void pullUpRefresh() {
        
    }