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

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

主页面布局文件 remind_auction_new_list.xml :

<RelativeLayout
style="@style/Rosemary.Plane"
xmlns:android="http://schemas.android.com/apk/res/android"> <!--头部布局-->
<com.liam.rosemary.ui.view.SlidingTabLayout
android:id="@+id/stl_square"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> <!--内容页-->
<android.support.v4.view.ViewPager
android:id="@+id/vp_square"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/stl_square"/> <!--切割线-->
<ImageView
style="@style/Rosemary.Line"
android:layout_below="@id/stl_square"
android:src="@drawable/horizontal_shadow"/> </RelativeLayout>

主页面代码:

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:

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<AuctionInfoViewModel> 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<AuctionInfoViewModel>(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);
}
}
}

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. jquery ajax 跨域处理

    今天使用JQuery Ajax 在本地电脑获取远程服务器数据的时候,发现使用$.ajax,$.getJSON,$.get这些都没有反应,后来再统一个网站下测试了一下,代码写得没有问题.后来想了想好想, ...

  2. phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置

    PHPMyadmin配置文件config.inc.php内容如下,在需要设置的地方增加了相关注释.     非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具: 1.先到网上下载 ...

  3. C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结

    我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是 ...

  4. 小学生之解析XML应用

    1.什么是XML? 解析:XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言)   ...

  5. php中bindValue的批量提交sql语句

    php预编译sql语句,可以批量提交sql,也可以实现防注入 <?php $dsn='mysql:host=127.0.0.1;port=3306;dbname=bisai'; $usernam ...

  6. html5 js跨域

    介绍 当我们使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Acce ...

  7. 1.1HTML的基本概念

    1.WWW有3个基本的组成部分,分别是URL(统一资源定位器),HTTP(超文本传输协议),HTML(本文本标记语言). 2.一个HTML文件是由一系列的元素和标签组成的,元素不区分大小写. 3.&l ...

  8. 游戏算法中lua脚本详解

    此外,函数本身也是一个变量,比如: dp@dp:~ % cat test.lua local mylen={} mylen.len3=function (x,y,z) return math.sqrt ...

  9. MacOS上的包管理工具

    众所周知,Linux世界中存在着如apt-get.yum等强大而简单的包管理工具,而在Macos中同样存在类似的东西. 当前比较流行的主要有如下两种: 1.Homebrew(推荐):其官网地址brew ...

  10. Sicily 1282. Computer Game

    题目地址:1282. Computer Game 思路: KMP算法,网上有很多资料,参考了一些网上的解题,收获很大,很感谢那些大神们!!! 通过这道题简单说说我对KMP算法的理解吧(大神们勿喷,虽然 ...