android SlidingTabLayout实现ViewPager页卡滑动效果

先来张效果图(可以滑动切换页卡)

\

 

主页面布局文件 remind_auction_new_list.xml :

 

主页面代码:


public class MyRemindAuctionNewListActivity extends ActionBarActivity implements IInit {
 
     private SlidingTabLayout mSlidingTabLayout;
     private ViewPager mViewPager;
 
     private RemindAdapter mRemindAdapter;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.remind_auction_new_list);
 
         init();
     }
 
     @Override
     public void init() {
         ActionBarUtil.setup( this , R.string.my_remind);
 
         mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.stl_square);
         mViewPager =(ViewPager)findViewById(R.id.vp_square);
 
         // 设置ViewPager属性
         mRemindAdapter = new RemindAdapter(getSupportFragmentManager(), this );
         mViewPager.setOffscreenPageLimit( 2 );
         mViewPager.setAdapter(mRemindAdapter);
 
         // 定义 SlidingTabLayout
         mSlidingTabLayout.setDistributeEvenly( true );
         mSlidingTabLayout.setSelectedIndicatorColors(getResources().getColor(R.color.primary));
         mSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.white));
         mSlidingTabLayout.setCustomTabView(R.layout.view_tab, R.id.tv_text);
         mSlidingTabLayout.setViewPager(mViewPager); // 加载ViewPager
 
     }
 
}


为ViewPager添加多个页卡的Adapter:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class RemindAdapter extends FragmentStatePagerAdapter {
 
     private String[] titles;
     private Context ctx;
 
     public RemindAdapter(FragmentManager fm, Context ctx) {
         super (fm);
         this .ctx = ctx;
         titles = ctx.getResources().getStringArray(R.array.remind_type);
     }
 
     @Override
     public Fragment getItem( int position) {
         if (position == 0 ) { //专场提醒
             return MyRemindAuctionListFragment.newInstance( 0 );
         } else { //卖家提醒
             return MyRemindSallerListFragment.newInstance( 1 );
         }
     }
 
     @Override
     public CharSequence getPageTitle( int position) {
         return titles[position];
     }
 
     @Override
     public int getCount() {
         return titles.length;
     }
}

 

 

每个页卡实际内容的Fragment:

 

public class MyRemindAuctionListFragment extends BaseFragment implements IPagination, IResponseHandler, SwipeRefreshLayout.OnRefreshListener {
 
     private int mTag;
     private ListView mListView; //拍场列表
     private ListAdapter mAdapter; //拍场适配器
     private MyRemindAuctionNewListActivity mActivity;
 
     //下拉刷新组件
     private SwipeRefreshLayout mSwipeRefreshLayout;
     private AuctionInfoViewModel mViewModel = new AuctionInfoViewModel();
     private TextView mEmptyView;   // 空白视图
 
     public static MyRemindAuctionListFragment newInstance( int tag) {
         MyRemindAuctionListFragment f = new MyRemindAuctionListFragment();
         f.mTag = tag;
         return f;
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View v = inflater.inflate(R.layout.remind_auction_list, null );
 
         mSwipeRefreshLayout = $(v, R.id.srl_refresh);
         mListView = $(v, R.id.remind_auction_listview);
         mEmptyView = $(v, R.id.tv_remind_warning);
 
         mSwipeRefreshLayout.setOnRefreshListener( this );
         mSwipeRefreshLayout.setColorSchemeResources(R.color.background_blue_standard, R.color.white, R.color.background_blue_standard, R.color.white);
         fetchData(FIRST);
 
         return v;
     }
 
     @Override
     public void onAttach(Activity activity) {
         super .onAttach(activity);
 
         if (activity instanceof MyRemindAuctionNewListActivity) {
             mActivity = ((MyRemindAuctionNewListActivity) activity);
         }
     }
 
     @Override
     public void fetchNewData( int tag) {
         mViewModel.increasePageIndex();
         fetchData(FIRST);
     }
 
     @Override
     public void fetchData( int tag) {
         mActivity.toggleProgress( true );
         GetMyRemindAuctionListParam param = new GetMyRemindAuctionListParam(Data.getUserID(), mViewModel.getPageIndex(), Data.PAGE_SIZE_MEDIUM);
         AuctionApi.getMyRemindAuctionList( this , param);
     }
 
     @Override
     public void updateUI(Object response, int tag) {
         mActivity.toggleProgress( false );
         mSwipeRefreshLayout.setRefreshing( false );
 
         mViewModel.inflate(response);
 
         if (mAdapter == null ) {
 
             mAdapter = new ListAdapter(mActivity, mViewModel.getList(), R.layout.item_list_remind_auction) {
                 @Override
                 protected void onBind( int position, AuctionInfoViewModel item, ViewHolder holder) {
                     holder.setImageUrl(R.id.head_icon, item.getImageUrl());
                     holder.setText(R.id.title, item.getAuctionIDStr());
                     holder.setText(R.id.sub_title, item.getAuctionName());
                     holder.setText(R.id.tv_auction_status, item.getStatusStr());
                     ((TextView) holder.get(R.id.tv_auction_status)).setTextColor(getResources().getColor(item.getColor()));
                 }
             };
 
             mListView.setAdapter(mAdapter);
             mEmptyView.setText(R.string.notice_auction_no_remind);
             mEmptyView.setGravity(Gravity.CENTER);
             mListView.setEmptyView(mEmptyView);
 
             /**
              *  上拉更多
              */
             mListView.setOnScrollListener( new AbsListView.OnScrollListener() {
                 @Override
                 public void onScrollStateChanged(AbsListView view, int scrollState) {
                     switch (scrollState) {
                         case SCROLL_STATE_IDLE:
 
                             if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1 ) {
                                 if (!mViewModel.isComplete()) {
                                     fetchNewData(FIRST);
                                 }
                             }
                             break ;
                     }
                 }
 
                 @Override
                 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                 }
             });
         } else {
             mAdapter.notifyDataSetChanged();
         }
 
         mListView.setOnItemClickListener( new onItemClickListener());
     }
 
     @Override
     public void onRefresh() {
         refresh();
     }
 
     @Override
     public void refresh() { // 重置页索引、适配器
         mViewModel.reset();
         fetchData(FIRST);
     }
 
     @Override
     public int getTotal() {
         if (mAdapter == null ) return 0 ;
         return mAdapter.getCount();
     }
 
     /**
      * 监听事件,以此启动不同页面
      */
     class onItemClickListener implements AdapterView.OnItemClickListener {
         @Override
         public void onItemClick(AdapterView<!--?--> parent, View view, int position, long id) {
 
             int temp = mViewModel.getList().get(position).getStatus();
             int auctionID = mViewModel.getList().get(position).getAuctionID();
 
             Intent mIntent = new Intent();
             switch (temp) {
                 case 1 :
                     mIntent.setClass(getActivity(), AuctionPreviewActivity. class );
                     break ;
                 case 2 :
                     mIntent.setClass(getActivity(), AuctionPreviewActivity. class );
                     break ;
                 case 3 :
                     mIntent.setClass(getActivity(), AuctionPreviewActivity. class );
                     break ;
                 default :
                     break ;
             }
             mIntent.putExtra(EnumIntentKey.AUCTION_ID.toString(), auctionID);
             startActivity(mIntent);
         }
     }
}
</auctioninfoviewmodel></auctioninfoviewmodel>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值