先来张效果图(能够滑动切换页卡)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

主页面布局文件 remind_auction_new_list.xml :

  1. <RelativeLayout
  2. style="@style/Rosemary.Plane"
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4.  
  5. <!--头部布局-->
  6. <com.liam.rosemary.ui.view.SlidingTabLayout
  7. android:id="@+id/stl_square"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"/>
  10.  
  11. <!--内容页-->
  12. <android.support.v4.view.ViewPager
  13. android:id="@+id/vp_square"
  14. android:layout_width="match_parent"
  15. android:layout_height="match_parent"
  16. android:layout_below="@id/stl_square"/>
  17.  
  18. <!--切割线-->
  19. <ImageView
  20. style="@style/Rosemary.Line"
  21. android:layout_below="@id/stl_square"
  22. android:src="@drawable/horizontal_shadow"/>
  23.  
  24. </RelativeLayout>

主页面代码:

  1. public class MyRemindAuctionNewListActivity extends ActionBarActivity implements IInit {
  2.  
  3. private SlidingTabLayout mSlidingTabLayout;
  4. private ViewPager mViewPager;
  5.  
  6. private RemindAdapter mRemindAdapter;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.remind_auction_new_list);
  12.  
  13. init();
  14. }
  15.  
  16. @Override
  17. public void init() {
  18. ActionBarUtil.setup(this, R.string.my_remind);
  19.  
  20. mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.stl_square);
  21. mViewPager =(ViewPager)findViewById(R.id.vp_square);
  22.  
  23. // 设置ViewPager属性
  24. mRemindAdapter = new RemindAdapter(getSupportFragmentManager(), this);
  25. mViewPager.setOffscreenPageLimit(2);
  26. mViewPager.setAdapter(mRemindAdapter);
  27.  
  28. // 定义 SlidingTabLayout
  29. mSlidingTabLayout.setDistributeEvenly(true);
  30. mSlidingTabLayout.setSelectedIndicatorColors(getResources().getColor(R.color.primary));
  31. mSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.white));
  32. mSlidingTabLayout.setCustomTabView(R.layout.view_tab, R.id.tv_text);
  33. mSlidingTabLayout.setViewPager(mViewPager); // 载入ViewPager
  34.  
  35. }
  36.  
  37. }

为ViewPager加入多个页卡的Adapter:

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

每一个页卡实际内容的Fragment:

  1. public class MyRemindAuctionListFragment extends BaseFragment implements IPagination, IResponseHandler, SwipeRefreshLayout.OnRefreshListener {
  2.  
  3. private int mTag;
  4. private ListView mListView;//拍场列表
  5. private ListAdapter<AuctionInfoViewModel> mAdapter;//拍场适配器
  6. private MyRemindAuctionNewListActivity mActivity;
  7.  
  8. //下拉刷新组件
  9. private SwipeRefreshLayout mSwipeRefreshLayout;
  10. private AuctionInfoViewModel mViewModel = new AuctionInfoViewModel();
  11. private TextView mEmptyView; // 空白视图
  12.  
  13. public static MyRemindAuctionListFragment newInstance(int tag) {
  14. MyRemindAuctionListFragment f = new MyRemindAuctionListFragment();
  15. f.mTag = tag;
  16. return f;
  17. }
  18.  
  19. @Override
  20. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  21. View v = inflater.inflate(R.layout.remind_auction_list, null);
  22.  
  23. mSwipeRefreshLayout = $(v, R.id.srl_refresh);
  24. mListView = $(v, R.id.remind_auction_listview);
  25. mEmptyView = $(v, R.id.tv_remind_warning);
  26.  
  27. mSwipeRefreshLayout.setOnRefreshListener(this);
  28. mSwipeRefreshLayout.setColorSchemeResources(R.color.background_blue_standard, R.color.white, R.color.background_blue_standard, R.color.white);
  29. fetchData(FIRST);
  30.  
  31. return v;
  32. }
  33.  
  34. @Override
  35. public void onAttach(Activity activity) {
  36. super.onAttach(activity);
  37.  
  38. if (activity instanceof MyRemindAuctionNewListActivity) {
  39. mActivity = ((MyRemindAuctionNewListActivity) activity);
  40. }
  41. }
  42.  
  43. @Override
  44. public void fetchNewData(int tag) {
  45. mViewModel.increasePageIndex();
  46. fetchData(FIRST);
  47. }
  48.  
  49. @Override
  50. public void fetchData(int tag) {
  51. mActivity.toggleProgress(true);
  52. GetMyRemindAuctionListParam param = new GetMyRemindAuctionListParam(Data.getUserID(), mViewModel.getPageIndex(), Data.PAGE_SIZE_MEDIUM);
  53. AuctionApi.getMyRemindAuctionList(this, param);
  54. }
  55.  
  56. @Override
  57. public void updateUI(Object response, int tag) {
  58. mActivity.toggleProgress(false);
  59. mSwipeRefreshLayout.setRefreshing(false);
  60.  
  61. mViewModel.inflate(response);
  62.  
  63. if (mAdapter == null) {
  64.  
  65. mAdapter = new ListAdapter<AuctionInfoViewModel>(mActivity, mViewModel.getList(), R.layout.item_list_remind_auction) {
  66. @Override
  67. protected void onBind(int position, AuctionInfoViewModel item, ViewHolder holder) {
  68. holder.setImageUrl(R.id.head_icon, item.getImageUrl());
  69. holder.setText(R.id.title, item.getAuctionIDStr());
  70. holder.setText(R.id.sub_title, item.getAuctionName());
  71. holder.setText(R.id.tv_auction_status, item.getStatusStr());
  72. ((TextView) holder.get(R.id.tv_auction_status)).setTextColor(getResources().getColor(item.getColor()));
  73. }
  74. };
  75.  
  76. mListView.setAdapter(mAdapter);
  77. mEmptyView.setText(R.string.notice_auction_no_remind);
  78. mEmptyView.setGravity(Gravity.CENTER);
  79. mListView.setEmptyView(mEmptyView);
  80.  
  81. /**
  82. * 上拉很多其它
  83. */
  84. mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
  85. @Override
  86. public void onScrollStateChanged(AbsListView view, int scrollState) {
  87. switch (scrollState) {
  88. case SCROLL_STATE_IDLE:
  89.  
  90. if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1) {
  91. if (!mViewModel.isComplete()) {
  92. fetchNewData(FIRST);
  93. }
  94. }
  95. break;
  96. }
  97. }
  98.  
  99. @Override
  100. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  101. }
  102. });
  103. } else {
  104. mAdapter.notifyDataSetChanged();
  105. }
  106.  
  107. mListView.setOnItemClickListener(new onItemClickListener());
  108. }
  109.  
  110. @Override
  111. public void onRefresh() {
  112. refresh();
  113. }
  114.  
  115. @Override
  116. public void refresh() {// 重置页索引、适配器
  117. mViewModel.reset();
  118. fetchData(FIRST);
  119. }
  120.  
  121. @Override
  122. public int getTotal() {
  123. if (mAdapter == null) return 0;
  124. return mAdapter.getCount();
  125. }
  126.  
  127. /**
  128. * 监听事件,以此启动不同页面
  129. */
  130. class onItemClickListener implements AdapterView.OnItemClickListener {
  131. @Override
  132. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  133.  
  134. int temp = mViewModel.getList().get(position).getStatus();
  135. int auctionID = mViewModel.getList().get(position).getAuctionID();
  136.  
  137. Intent mIntent = new Intent();
  138. switch (temp) {
  139. case 1:
  140. mIntent.setClass(getActivity(), AuctionPreviewActivity.class);
  141. break;
  142. case 2:
  143. mIntent.setClass(getActivity(), AuctionPreviewActivity.class);
  144. break;
  145. case 3:
  146. mIntent.setClass(getActivity(), AuctionPreviewActivity.class);
  147. break;
  148. default:
  149. break;
  150. }
  151. mIntent.putExtra(EnumIntentKey.AUCTION_ID.toString(), auctionID);
  152. startActivity(mIntent);
  153. }
  154. }
  155. }

android SlidingTabLayout实现ViewPager页卡滑动效果的更多相关文章

  1. Android:使用ViewPager实现左右滑动切换图片(图上有点点)

    在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...

  2. Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?

    DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...

  3. Android:使用ViewPager实现左右滑动切换图片 (简单版)

    ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...

  4. Android实现多页左右滑动效果,支持子view动态创建和cache

    要实现多页滑动效果,主要是需要处理onTouchEvent和onInterceptTouchEvent,要处理好touch事件的子控件和父控件的传递问题. 滚动控制可以利用android的Scroll ...

  5. 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)

    1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...

  6. 兔子--Fragment与ViewPager要切换滑动效果

    效果图: 文件夹结构: 代码分析: MainActivity.java package com.example.myfragment; /** * @author Arthur Lee * @time ...

  7. Android 仿百度手机助手首页滑动效果

    今天看到百度手机助手首页上的滑动效果非常nice,主要功能归结为: 1.当手指上划时,顶部搜索栏随手指移动距离而缩小到隐藏,隐藏后内容还是可以继续移动 2.手指下滑时,当显示内容达到第一个时,顶部搜索 ...

  8. 使用ViewPager实现广告滑动效果

    效果图:               watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSk1DNjAx/font/5a6L5L2T/fontsize/400/ ...

  9. Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版

    描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的: 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发: APP已经完善了 ...

随机推荐

  1. (转)js arguments对象

    在javascript中,不需要明确指出参数名,就能访问它们.如: function hi(){if(arguments[0]=="andy"){     return;}aler ...

  2. ImageView的学习

    学习安卓时我还是习惯看懂手册,虽然是英文但是可以获得的东西必然也是更多的,否则自己只能停留在拾人牙缝的水平,虽然我是初学,但是还是分享一些自己的学习过程及方法. 从手册中我们看以知道,ImageVie ...

  3. effective C#之 - 使用属性代替成员变量

    使用属性代替公共成员变量,一个很明显的好处是,很容易在一个地方对成员变量进行控制,例如: class Customer { private string name; public string Nam ...

  4. POP动画引擎中Layer与CALayer的一点区别

    POP动画引擎是facebook提供的一个开源框架, 可以实现很多的动画效果, 这里就不一一介绍啦, 有兴趣的童鞋请移步: https://github.com/facebook/pop 下面简单的讲 ...

  5. nodejs http.get乱码问题处理方法

    var req = http.get(url,function(res){ res.setEncoding('utf-8'); var html = '' res.on('data',function ...

  6. jsp之间url传值出现中文乱码

    示例: T1.jsp http://localhost:8080/test/Test.action?site=北京 T2.jsp ..... <%@ page language="ja ...

  7. 信息安全实验一:buffer-overflow

    title: buffer-overflow date: 2016-01-10 14:17:17 categories: information-security tags: buffer-overf ...

  8. jquery-qrcode在线生成二维码

    通过bower进行获取: y@y:ydkt$ bower install jquery-qrcode --save bower not-cached git://github.com/gcusnieu ...

  9. Altium designer PCB中过孔铺地连接的设置

    在Altium designer 6及更高版本如Altium Designer Winter 9.altium designer summer 9都会有这样的问题,在Altium DXP2004里面是 ...

  10. C51的一些误区和注意事项

    1) C忌讳绝对定位.常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了.在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作用域,编译器就把一个固定地址给这个变量.怎么取得这个 ...