闲着。用viewpager+fragment实现了个滚动tab。。轻拍,以后会陆续发先小东西出来。。爱分享,才快乐。demo见附件。。

  1. package com.example.demo;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.support.v4.app.FragmentActivity;
  7. import android.support.v4.app.FragmentManager;
  8. import android.support.v4.app.FragmentPagerAdapter;
  9. import android.support.v4.view.ViewPager;
  10. import android.support.v4.view.ViewPager.OnPageChangeListener;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.TextView;
  14. public class MainActivity extends FragmentActivity {
  15. private TextView chatView, address, findView;
  16. private ViewPager mViewPager;
  17. private TextView mBottomLine;
  18. private int screenWidth = 0;
  19. private int currentIndex = 0;
  20. private MyPagerAdapter myPagerAdapter;
  21. private List<Fragment> mFragmentList = new ArrayList<Fragment>();
  22. private List<String> mTitleList = new ArrayList<String>();
  23. MyFragment chatFragment;
  24. MyFragment findFragment;
  25. MyFragment addressFragment;
  26. @Override
  27. protected void onCreate(Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. setContentView(R.layout.activity_main);
  30. initComponents();
  31. }
  32. private void initComponents() {
  33. this.mBottomLine = (TextView) findViewById(R.id.bottom_line);
  34. this.screenWidth = getWindowManager().getDefaultDisplay().getWidth();
  35. this.chatView = (TextView) findViewById(R.id.chat_top_info);
  36. this.findView = (TextView) findViewById(R.id.find_top_info);
  37. this.address = (TextView) findViewById(R.id.address_top_info);
  38. TopTabClickListener clickListener = new TopTabClickListener();
  39. this.chatView.setOnClickListener(clickListener);
  40. this.findView.setOnClickListener(clickListener);
  41. this.address.setOnClickListener(clickListener);
  42. this.mViewPager = (ViewPager)findViewById(R.id.viewPager);
  43. chatFragment = new MyFragment();
  44. Bundle b = new Bundle();
  45. b.putInt("index", 0);
  46. chatFragment.setArguments(b);
  47. mFragmentList.add(chatFragment);
  48. findFragment = new MyFragment();
  49. b = new Bundle();
  50. b.putInt("index", 1);
  51. findFragment.setArguments(b);
  52. mFragmentList.add(findFragment);
  53. addressFragment = new MyFragment();
  54. b = new Bundle();
  55. b.putInt("index", 2);
  56. addressFragment.setArguments(b);
  57. mFragmentList.add(addressFragment);
  58. myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mFragmentList, mTitleList);
  59. mViewPager.setAdapter(myPagerAdapter);
  60. mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
  61. @Override
  62. public void onPageSelected(int index) {}
  63. @Override
  64. public void onPageScrolled(int index, float arg1, int pixes) {
  65. if(pixes != 0){
  66. mBottomLine.layout((int) ((index + arg1) * screenWidth / 3), 0, (int) ((index + 1 + arg1) * screenWidth / 3), mBottomLine.getWidth());
  67. }
  68. if (pixes == 0) {
  69. currentIndex = index;
  70. changeIndex(currentIndex);
  71. }
  72. System.out.println("the state is : " + arg1 + "   and index is " + index);
  73. }
  74. @Override
  75. public void onPageScrollStateChanged(int state) {}
  76. });
  77. }
  78. public void onLeftBtnClick(View view){
  79. this.finish();
  80. }
  81. private class TopTabClickListener implements OnClickListener{
  82. @Override
  83. public void onClick(View view) {
  84. if (view.getId() == chatView.getId()) {
  85. mViewPager.setCurrentItem(0);
  86. }else if(view.getId() == findView.getId()){
  87. mViewPager.setCurrentItem(1);
  88. }else{
  89. mViewPager.setCurrentItem(2);
  90. }
  91. changeIndex(mViewPager.getCurrentItem());
  92. }
  93. }
  94. private void changeIndex(int index){
  95. if(index == 0){
  96. chatView.setTextColor(getResources().getColor(R.color.green));
  97. findView.setTextColor(getResources().getColor(R.color.black));
  98. address.setTextColor(getResources().getColor(R.color.black));
  99. }else if(index == 1){
  100. findView.setTextColor(getResources().getColor(R.color.green));
  101. chatView.setTextColor(getResources().getColor(R.color.black));
  102. address.setTextColor(getResources().getColor(R.color.black));
  103. }else {
  104. address.setTextColor(getResources().getColor(R.color.green));
  105. findView.setTextColor(getResources().getColor(R.color.black));
  106. chatView.setTextColor(getResources().getColor(R.color.black));
  107. }
  108. mBottomLine.layout((int) (index * screenWidth / 3), 0, (int) ((index + 1) * screenWidth / 3), mBottomLine.getWidth());
  109. }
  110. private class MyPagerAdapter extends FragmentPagerAdapter {
  111. private List<Fragment> fragmentList;
  112. private List<String> titleList;
  113. public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList,
  114. List<String> titleList) {
  115. super(fm);
  116. this.fragmentList = fragmentList;
  117. this.titleList = titleList;
  118. }
  119. /**
  120. * 得到每个页面
  121. */
  122. @Override
  123. public Fragment getItem(int arg0) {
  124. return (fragmentList == null || fragmentList.size() == 0) ? null
  125. : fragmentList.get(arg0);
  126. }
  127. /**
  128. * 每个页面的title
  129. */
  130. @Override
  131. public CharSequence getPageTitle(int position) {
  132. return (titleList.size() > position) ? titleList.get(position) : "";
  133. }
  134. @Override
  135. public int getCount() {
  136. return fragmentList == null ? 0 : fragmentList.size();
  137. }
  138. }
  139. }
  140. package com.example.demo;
  141. import android.os.Bundle;
  142. import android.support.v4.app.Fragment;
  143. import android.view.LayoutInflater;
  144. import android.view.View;
  145. import android.view.ViewGroup;
  146. import android.widget.TextView;
  147. public class MyFragment extends Fragment {
  148. private int index = 0;
  149. private LayoutInflater mInflater;
  150. @Override
  151. public void onCreate(Bundle savedInstanceState) {
  152. super.onCreate(savedInstanceState);
  153. index = getArguments().getInt("index", 0);
  154. }
  155. @Override
  156. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  157. Bundle savedInstanceState) {
  158. mInflater = inflater;
  159. TextView v = (TextView) mInflater.inflate(R.layout.fragment, null);
  160. v.setText("第" + index);
  161. return v;
  162. }
  163. }

demo.zip (1.4 MB)

安卓开发之使用viewpager+fragment实现滚动tab页的更多相关文章

  1. 安卓开发_浅谈Fragment之ListFragment

    ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...

  2. 安卓开发_WebView如何在Fragment中使用

    之前学习了如何在activity中使用WebView控件来显示网页. 在我的实际开发中,有需要在Fragment中用到WebView控件的,那么就百度学习了一下 其实很简单,但是当然不是和在Activ ...

  3. 安卓开发_浅谈Fragment之事务添加Fragment对象

    我们都知道给一个activity动态添加fragment的时候 有下面几种添加方式 看一下布局文件 <LinearLayout xmlns:android="http://schema ...

  4. Android Viewpager+Fragment实现滑动标签页

    ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...

  5. ViewPager + Fragment实现滑动标签页

    http://blog.csdn.net/lizhenmingdirk/article/details/13631813; tab与frg的区别: http://www.cnblogs.com/tia ...

  6. 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)

    什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...

  7. 安卓开发_深入学习ViewPager控件

    一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...

  8. 安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)

    记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安 ...

  9. Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

随机推荐

  1. MySQL_PHP学习笔记_2015_0923_MySQL如何开启事件

    1. 查看事件状态>>>>>>>>>>>>>>>>>>>>>>> ...

  2. c++类使用

    一.C++定义类(注意:结束部分的分号不能省略) class 类名 { public: //公共的行为或属性 private: //公共的行为或属性 }; 注意:类的成员变量在定义时不能进行初始化, ...

  3. error while loading shared libraries: lib******: cannot open shared object file: No such file or directory

    程序编译成功后,运行时错误: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object fi ...

  4. dom 筛选器

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. HP ILO2 使用详细教程

    iLO是Intergrated Light-Out的缩写,是惠普特有的远程管理功能,目前最新的版本是iLO2.通过iLO2可以实现硬件级别的服务器远程管理,包括开关机.重启.服务器状态的监控.虚拟KV ...

  6. Using Boost Libraries in Windows Store and Phone Applications

    Using Boost Libraries in Windows Store and Phone Applications RATE THIS Steven Gates 18 Jul 2014 5:3 ...

  7. DataTrigger的几个用法

    1.用在textbox等输入控件上,验证输入是否合法. <Window.Resources> <Style TargetType="TextBox"> &l ...

  8. win2008 64位 + oracle11G 64位 IIS7.5 配置WEBSERVICE

    第一个错误: 安装过程依旧是那样简单,但在配好IIS站点,准备连接数据库的时候出错了,以下是错误提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更 ...

  9. django admin site (三)

    1.自定义模板设置: ModelAdmin. add_form_template Path to a custom template, used by add_view(). ModelAdmin. ...

  10. Redis初步

    Redis目录下文件: redis-server.exe:服务程序 redis-check-dump.exe:本地数据库检查 redis-check-aof.exe:更新日志检查 redis-benc ...