闲着。用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. <javascript高级程序设计>笔记

    1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...

  2. 初识HTTP 1.1与HTTP 1.0

    HTTP 1.1与HTTP 1.0的比较 一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个 ...

  3. IOS平台设计规范

    一.UI的控件概述: 1.框架UI的元素分为4类: A:栏:状态栏目和导航栏的结合体; B:内容视图:应用显示的内容信息,包括相关的交互行为,例如滚屏.插入.删除等操作进行排序; C:控制元素:产品行 ...

  4. httpd.conf 禁止运行PHP和html页面

    <VirtualHost *:80>    ServerName www.test.com    DocumentRoot /var/www/www.test.com    ErrorDo ...

  5. rm 注意

    软连接ln -s lnfile file rm -rf lnfile只是删除lnfile ln -s lndir dir rm -rf lndir 删除链接 rm -rf lndir/删除目录下文件

  6. jquery获取显示器,屏幕的宽度,和高度

    Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...

  7. 第三百五十一天 how can I 坚持

    是应该喜欢还是厌烦这种状态,犹豫不定,毫无目标. 人不贪,谁信,我嘴上说我不贪,可是内心已经把我出卖了,要不怎么股票会被套呢. 别人贪婪时我恐惧,别人恐惧时我贪婪,我成了什么,别人贪婪时,我狂妄,别人 ...

  8. c++一些问题总结

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  9. HD1000A + B Problem

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...

  10. 设置UIButton文字大小颜色不同

    _loginBtn = [[UIButton alloc]initWithFrame:CGRectMake(iconX, CGRectGetMaxY(passwordBGView.frame)+25, ...