安卓开发之使用viewpager+fragment实现滚动tab页_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 安卓开发之使用viewpager+fragment实现滚动tab页

安卓开发之使用viewpager+fragment实现滚动tab页

 2014/9/16 10:20:36  xiaochao1234  程序员俱乐部  我要评论(0)
  • 摘要:闲着。用viewpager+fragment实现了个滚动tab。。轻拍,以后会陆续发先小东西出来。。爱分享,才快乐。demo见附件。。Java代码packagecom.example.demo;importjava.util.ArrayList;importjava.util.List;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.support.v4.app
  • 标签:实现 使用 view 开发

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

 

Java代码 javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash">class%20MainActivity%20extends%20FragmentActivity%20%7B%0A%0Aprivate%20TextView%20chatView%2C%20address%2C%20findView%3B%0Aprivate%20ViewPager%20mViewPager%3B%0Aprivate%20TextView%20mBottomLine%3B%0Aprivate%20int%20screenWidth%20%3D%200%3B%0A%0Aprivate%20int%20currentIndex%20%3D%200%3B%0A%0Aprivate%20MyPagerAdapter%20myPagerAdapter%3B%0Aprivate%20List%26lt%3BFragment%26gt%3B%20mFragmentList%20%3D%20new%20ArrayList%26lt%3BFragment%26gt%3B()%3B%0Aprivate%20List%26lt%3BString%26gt%3B%20mTitleList%20%3D%20new%20ArrayList%26lt%3BString%26gt%3B()%3B%0AMyFragment%20chatFragment%3B%0AMyFragment%20findFragment%3B%0AMyFragment%20addressFragment%3B%0A%0A%40Override%0Aprotected%20void%20onCreate(Bundle%20savedInstanceState)%20%7B%0Asuper.onCreate(savedInstanceState)%3B%0AsetContentView(R.layout.activity_main)%3B%0A%0AinitComponents()%3B%0A%7D%0A%0Aprivate%20void%20initComponents()%20%7B%0A%0Athis.mBottomLine%20%3D%20(TextView)%20findViewById(R.id.bottom_line)%3B%0Athis.screenWidth%20%3D%20getWindowManager().getDefaultDisplay().getWidth()%3B%0Athis.chatView%20%3D%20(TextView)%20findViewById(R.id.chat_top_info)%3B%0Athis.findView%20%3D%20(TextView)%20findViewById(R.id.find_top_info)%3B%0Athis.address%20%3D%20(TextView)%20findViewById(R.id.address_top_info)%3B%0ATopTabClickListener%20clickListener%20%3D%20new%20TopTabClickListener()%3B%0Athis.chatView.setOnClickListener(clickListener)%3B%0Athis.findView.setOnClickListener(clickListener)%3B%0Athis.address.setOnClickListener(clickListener)%3B%0A%0Athis.mViewPager%20%3D%20(ViewPager)findViewById(R.id.viewPager)%3B%0AchatFragment%20%3D%20new%20MyFragment()%3B%0ABundle%20b%20%3D%20new%20Bundle()%3B%0Ab.putInt(%22index%22%2C%200)%3B%0AchatFragment.setArguments(b)%3B%0A%20%20%20%20%20%20%20%20mFragmentList.add(chatFragment)%3B%0A%20%20%20%20%20%20%20%20findFragment%20%3D%20new%20MyFragment()%3B%0A%20%20%20%20%20%20%20%20b%20%3D%20new%20Bundle()%3B%0A%20%20%20%20%20%20%20%20b.putInt(%22index%22%2C%201)%3B%0A%20%20%20%20%20%20%20%20findFragment.setArguments(b)%3B%0A%20%20%20%20%20%20%20%20mFragmentList.add(findFragment)%3B%0A%20%20%20%20%20%20%20%20addressFragment%20%3D%20new%20MyFragment()%3B%0A%20%20%20%20%20%20%20%20b%20%3D%20new%20Bundle()%3B%0A%20%20%20%20%20%20%20%20b.putInt(%22index%22%2C%202)%3B%0A%20%20%20%20%20%20%20%20addressFragment.setArguments(b)%3B%0A%20%20%20%20%20%20%20%20mFragmentList.add(addressFragment)%3B%0A%20%20%20%20%20%20%20%20myPagerAdapter%20%3D%20new%20MyPagerAdapter(getSupportFragmentManager()%2C%20mFragmentList%2C%20mTitleList)%3B%0A%20%20%20%20%20%20%20%20mViewPager.setAdapter(myPagerAdapter)%3B%0A%20%20%20%20%20%20%20%20mViewPager.setOnPageChangeListener(new%20OnPageChangeListener()%20%7B%0A%0A%40Override%0Apublic%20void%20onPageSelected(int%20index)%20%7B%7D%0A%0A%40Override%0Apublic%20void%20onPageScrolled(int%20index%2C%20float%20arg1%2C%20int%20pixes)%20%7B%0Aif(pixes%20!%3D%200)%7B%0AmBottomLine.layout((int)%20((index%20%2B%20arg1)%20*%20screenWidth%20%2F%203)%2C%200%2C%20(int)%20((index%20%2B%201%20%2B%20arg1)%20*%20screenWidth%20%2F%203)%2C%20mBottomLine.getWidth())%3B%0A%7D%0Aif%20(pixes%20%3D%3D%200)%20%7B%0AcurrentIndex%20%3D%20index%3B%0AchangeIndex(currentIndex)%3B%0A%7D%0ASystem.out.println(%22the%20state%20is%20%3A%20%22%20%2B%20arg1%20%2B%20%22%20%20%20and%20index%20is%20%22%20%2B%20index)%3B%0A%7D%0A%0A%40Override%0Apublic%20void%20onPageScrollStateChanged(int%20state)%20%7B%7D%0A%7D)%3B%0A%7D%0A%0Apublic%20void%20onLeftBtnClick(View%20view)%7B%0Athis.finish()%3B%0A%7D%0A%0Aprivate%20class%20TopTabClickListener%20implements%20OnClickListener%7B%0A%0A%40Override%0Apublic%20void%20onClick(View%20view)%20%7B%0Aif%20(view.getId()%20%3D%3D%20chatView.getId())%20%7B%0AmViewPager.setCurrentItem(0)%3B%0A%7Delse%20if(view.getId()%20%3D%3D%20findView.getId())%7B%0AmViewPager.setCurrentItem(1)%3B%0A%7Delse%7B%0AmViewPager.setCurrentItem(2)%3B%0A%7D%0AchangeIndex(mViewPager.getCurrentItem())%3B%0A%7D%0A%0A%7D%0A%0Aprivate%20void%20changeIndex(int%20index)%7B%0Aif(index%20%3D%3D%200)%7B%0AchatView.setTextColor(getResources().getColor(R.color.green))%3B%0AfindView.setTextColor(getResources().getColor(R.color.black))%3B%0Aaddress.setTextColor(getResources().getColor(R.color.black))%3B%0A%7Delse%20if(index%20%3D%3D%201)%7B%0AfindView.setTextColor(getResources().getColor(R.color.green))%3B%0AchatView.setTextColor(getResources().getColor(R.color.black))%3B%0Aaddress.setTextColor(getResources().getColor(R.color.black))%3B%0A%7Delse%20%7B%0Aaddress.setTextColor(getResources().getColor(R.color.green))%3B%0AfindView.setTextColor(getResources().getColor(R.color.black))%3B%0AchatView.setTextColor(getResources().getColor(R.color.black))%3B%0A%7D%0AmBottomLine.layout((int)%20(index%20*%20screenWidth%20%2F%203)%2C%200%2C%20(int)%20((index%20%2B%201)%20*%20screenWidth%20%2F%203)%2C%20mBottomLine.getWidth())%3B%0A%7D%0A%0Aprivate%20class%20MyPagerAdapter%20extends%20FragmentPagerAdapter%20%7B%0A%0Aprivate%20List%26lt%3BFragment%26gt%3B%20fragmentList%3B%0Aprivate%20List%26lt%3BString%26gt%3B%20titleList%3B%0A%0Apublic%20MyPagerAdapter(FragmentManager%20fm%2C%20List%26lt%3BFragment%26gt%3B%20fragmentList%2C%0AList%26lt%3BString%26gt%3B%20titleList)%20%7B%0Asuper(fm)%3B%0Athis.fragmentList%20%3D%20fragmentList%3B%0Athis.titleList%20%3D%20titleList%3B%0A%7D%0A%0A%2F**%0A*%20%E5%BE%97%E5%88%B0%E6%AF%8F%E4%B8%AA%E9%A1%B5%E9%9D%A2%0A*%2F%0A%40Override%0Apublic%20Fragment%20getItem(int%20arg0)%20%7B%0Areturn%20(fragmentList%20%3D%3D%20null%20%7C%7C%20fragmentList.size()%20%3D%3D%200)%20%3F%20null%0A%3A%20fragmentList.get(arg0)%3B%0A%7D%0A%0A%2F**%0A*%20%E6%AF%8F%E4%B8%AA%E9%A1%B5%E9%9D%A2%E7%9A%84title%0A*%2F%0A%40Override%0Apublic%20CharSequence%20getPageTitle(int%20position)%20%7B%0Areturn%20(titleList.size()%20%26gt%3B%20position)%20%3F%20titleList.get(position)%20%3A%20%22%22%3B%0A%7D%0A%0A%40Override%0Apublic%20int%20getCount()%20%7B%0Areturn%20fragmentList%20%3D%3D%20null%20%3F%200%20%3A%20fragmentList.size()%3B%0A%7D%0A%7D%0A%7D%0A%0A%0Apackage%20com.example.demo%3B%0A%0Aimport%20android.os.Bundle%3B%0Aimport%20android.support.v4.app.Fragment%3B%0Aimport%20android.view.LayoutInflater%3B%0Aimport%20android.view.View%3B%0Aimport%20android.view.ViewGroup%3B%0Aimport%20android.widget.TextView%3B%0A%0Apublic%20class%20MyFragment%20extends%20Fragment%20%7B%0A%0Aprivate%20int%20index%20%3D%200%3B%0Aprivate%20LayoutInflater%20mInflater%3B%0A%0A%40Override%0Apublic%20void%20onCreate(Bundle%20savedInstanceState)%20%7B%0Asuper.onCreate(savedInstanceState)%3B%0Aindex%20%3D%20getArguments().getInt(%22index%22%2C%200)%3B%0A%7D%0A%0A%40Override%0Apublic%20View%20onCreateView(LayoutInflater%20inflater%2C%20ViewGroup%20container%2C%0ABundle%20savedInstanceState)%20%7B%0AmInflater%20%3D%20inflater%3B%0ATextView%20v%20%3D%20(TextView)%20mInflater.inflate(R.layout.fragment%2C%20null)%3B%0Av.setText(%22%E7%AC%AC%22%20%2B%20index)%3B%0Areturn%20v%3B%0A%7D%0A%7D" />ways" /> 收藏代码
  1. package com.example.demo;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.os.Bundle;  
  7. import android.support.v4.app.Fragment;  
  8. import android.support.v4.app.FragmentActivity;  
  9. import android.support.v4.app.FragmentManager;  
  10. import android.support.v4.app.FragmentPagerAdapter;  
  11. import android.support.v4.view.ViewPager;  
  12. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  13. import android.view.View;  
  14. import android.view.View.OnClickListener;  
  15. import android.widget.TextView;  
  16.   
  17. public class MainActivity extends FragmentActivity {  
  18.   
  19. private TextView chatView, address, findView;  
  20. private ViewPager mViewPager;  
  21. private TextView mBottomLine;  
  22. private int screenWidth = 0;  
  23.   
  24. private int currentIndex = 0;  
  25.   
  26. private MyPagerAdapter myPagerAdapter;  
  27. private List<Fragment> mFragmentList = new ArrayList<Fragment>();  
  28. private List<String> mTitleList = new ArrayList<String>();  
  29. MyFragment chatFragment;  
  30. MyFragment findFragment;  
  31. MyFragment addressFragment;  
  32.   
  33. @Override  
  34. protected void onCreate(Bundle savedInstanceState) {  
  35. super.onCreate(savedInstanceState);  
  36. setContentView(R.layout.activity_main);  
  37.   
  38. initComponents();  
  39. }  
  40.   
  41. private void initComponents() {  
  42.   
  43. this.mBottomLine = (TextView) findViewById(R.id.bottom_line);  
  44. this.screenWidth = getWindowManager().getDefaultDisplay().getWidth();  
  45. this.chatView = (TextView) findViewById(R.id.chat_top_info);  
  46. this.findView = (TextView) findViewById(R.id.find_top_info);  
  47. this.address = (TextView) findViewById(R.id.address_top_info);  
  48. TopTabClickListener clickListener = new TopTabClickListener();  
  49. this.chatView.setOnClickListener(clickListener);  
  50. this.findView.setOnClickListener(clickListener);  
  51. this.address.setOnClickListener(clickListener);  
  52.   
  53. this.mViewPager = (ViewPager)findViewById(R.id.viewPager);  
  54. chatFragment = new MyFragment();  
  55. Bundle b = new Bundle();  
  56. b.putInt("index", 0);  
  57. chatFragment.setArguments(b);  
  58.         mFragmentList.add(chatFragment);  
  59.         findFragment = new MyFragment();  
  60.         b = new Bundle();  
  61.         b.putInt("index", 1);  
  62.         findFragment.setArguments(b);  
  63.         mFragmentList.add(findFragment);  
  64.         addressFragment = new MyFragment();  
  65.         b = new Bundle();  
  66.         b.putInt("index", 2);  
  67.         addressFragment.setArguments(b);  
  68.         mFragmentList.add(addressFragment);  
  69.         myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mFragmentList, mTitleList);  
  70.         mViewPager.setAdapter(myPagerAdapter);  
  71.         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {  
  72.   
  73. @Override  
  74. public void onPageSelected(int index) {}  
  75.   
  76. @Override  
  77. public void onPageScrolled(int index, float arg1, int pixes) {  
  78. if(pixes != 0){  
  79. mBottomLine.layout((int) ((index + arg1) * screenWidth / 3), 0, (int) ((index + 1 + arg1) * screenWidth / 3), mBottomLine.getWidth());  
  80. }  
  81. if (pixes == 0) {  
  82. currentIndex = index;  
  83. changeIndex(currentIndex);  
  84. }  
  85. System.out.println("the state is : " + arg1 + "   and index is " + index);  
  86. }  
  87.   
  88. @Override  
  89. public void onPageScrollStateChanged(int state) {}  
  90. });  
  91. }  
  92.   
  93. public void onLeftBtnClick(View view){  
  94. this.finish();  
  95. }  
  96.   
  97. private class TopTabClickListener implements OnClickListener{  
  98.   
  99. @Override  
  100. public void onClick(View view) {  
  101. if (view.getId() == chatView.getId()) {  
  102. mViewPager.setCurrentItem(0);  
  103. }else if(view.getId() == findView.getId()){  
  104. mViewPager.setCurrentItem(1);  
  105. }else{  
  106. mViewPager.setCurrentItem(2);  
  107. }  
  108. changeIndex(mViewPager.getCurrentItem());  
  109. }  
  110.   
  111. }  
  112.   
  113. private void changeIndex(int index){  
  114. if(index == 0){  
  115. chatView.setTextColor(getResources().getColor(R.color.green));  
  116. findView.setTextColor(getResources().getColor(R.color.black));  
  117. address.setTextColor(getResources().getColor(R.color.black));  
  118. }else if(index == 1){  
  119. findView.setTextColor(getResources().getColor(R.color.green));  
  120. chatView.setTextColor(getResources().getColor(R.color.black));  
  121. address.setTextColor(getResources().getColor(R.color.black));  
  122. }else {  
  123. address.setTextColor(getResources().getColor(R.color.green));  
  124. findView.setTextColor(getResources().getColor(R.color.black));  
  125. chatView.setTextColor(getResources().getColor(R.color.black));  
  126. }  
  127. mBottomLine.layout((int) (index * screenWidth / 3), 0, (int) ((index + 1) * screenWidth / 3), mBottomLine.getWidth());  
  128. }  
  129.   
  130. private class MyPagerAdapter extends FragmentPagerAdapter {  
  131.   
  132. private List<Fragment> fragmentList;  
  133. private List<String> titleList;  
  134.   
  135. public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList,  
  136. List<String> titleList) {  
  137. super(fm);  
  138. this.fragmentList = fragmentList;  
  139. this.titleList = titleList;  
  140. }  
  141.   
  142. /** 
  143. * 得到每个页面 
  144. */  
  145. @Override  
  146. public Fragment getItem(int arg0) {  
  147. return (fragmentList == null || fragmentList.size() == 0) ? null  
  148. : fragmentList.get(arg0);  
  149. }  
  150.   
  151. /** 
  152. * 每个页面的title 
  153. */  
  154. @Override  
  155. public CharSequence getPageTitle(int position) {  
  156. return (titleList.size() > position) ? titleList.get(position) : "";  
  157. }  
  158.   
  159. @Override  
  160. public int getCount() {  
  161. return fragmentList == null ? 0 : fragmentList.size();  
  162. }  
  163. }  
  164. }  
  165.   
  166.   
  167. package com.example.demo;  
  168.   
  169. import android.os.Bundle;  
  170. import android.support.v4.app.Fragment;  
  171. import android.view.LayoutInflater;  
  172. import android.view.View;  
  173. import android.view.ViewGroup;  
  174. import android.widget.TextView;  
  175.   
  176. public class MyFragment extends Fragment {  
  177.   
  178. private int index = 0;  
  179. private LayoutInflater mInflater;  
  180.   
  181. @Override  
  182. public void onCreate(Bundle savedInstanceState) {  
  183. super.onCreate(savedInstanceState);  
  184. index = getArguments().getInt("index", 0);  
  185. }  
  186.   
  187. @Override  
  188. public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  189. Bundle savedInstanceState) {  
  190. mInflater = inflater;  
  191. TextView v = (TextView) mInflater.inflate(R.layout.fragment, null);  
  192. v.setText("第" + index);  
  193. return v;  
  194. }  
  195. }  

 

demo.zip (1.4 MB)

发表评论
用户名: 匿名