tab界面实现方式之ViewPager+FragmentPager

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tab界面实现方式之ViewPager+FragmentPager相关的知识,希望对你有一定的参考价值。

这次的实现的目的其实跟viewpager+view实现的功能一样的,唯一不同的是:这里的viewpager加载的是Fragment。

其中xml代码与之前的完全一样,所以这里就不贴了。这里我只贴下MainActivity的代码

MainActivity代码

java代码

  1 package com.example.android_tab3;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import com.example.Fragment.AddressFragment;
  7 import com.example.Fragment.FriendFragment;
  8 import com.example.Fragment.SettingFragment;
  9 import com.example.Fragment.WeixinFragment;
 10 
 11 import android.os.Bundle;
 12 import android.support.v4.app.Fragment;
 13 import android.support.v4.app.FragmentActivity;
 14 import android.support.v4.app.FragmentPagerAdapter;
 15 import android.support.v4.view.ViewPager;
 16 import android.support.v4.view.ViewPager.OnPageChangeListener;
 17 import android.util.Log;
 18 import android.view.View;
 19 import android.view.View.OnClickListener;
 20 import android.view.Window;
 21 import android.widget.ImageButton;
 22 import android.widget.LinearLayout;
 23 
 24 public class MainActivity extends FragmentActivity implements OnClickListener{
 25     private ViewPager viewpager = null;
 26     private List<Fragment> list = null;
 27     private FragmentPagerAdapter adapter = null;
 28     private ImageButton imagebutton_weixin = null;
 29     private ImageButton imagebutton_friend = null;
 30     private ImageButton imagebutton_address = null;
 31     private ImageButton imagebutton_setting = null;
 32     
 33     private LinearLayout linear_weixin = null;
 34     private LinearLayout linear_friend = null;
 35     private LinearLayout linear_address = null;
 36     private LinearLayout linear_setting = null;
 37     protected void onCreate(Bundle savedInstanceState) {
 38         super.onCreate(savedInstanceState);
 39         requestWindowFeature(Window.FEATURE_NO_TITLE);
 40         setContentView(R.layout.activity_main);
 41         initview();
 42         initEvents();
 43     }
 44 
 45     private void initview()
 46     {
 47         viewpager = (ViewPager) findViewById(R.id.viewpager);
 48         
 49         imagebutton_weixin = (ImageButton) findViewById(R.id.imagebutton_weixin);
 50         imagebutton_friend = (ImageButton) findViewById(R.id.imagebutton_friend);
 51         imagebutton_address = (ImageButton) findViewById(R.id.imagebutton_address);
 52         imagebutton_setting = (ImageButton) findViewById(R.id.imagebutton_setting);
 53         
 54         linear_weixin = (LinearLayout) findViewById(R.id.linear_weixin);
 55         linear_friend = (LinearLayout) findViewById(R.id.linear_friend);
 56         linear_address = (LinearLayout) findViewById(R.id.linear_address);
 57         linear_setting = (LinearLayout) findViewById(R.id.linear_setting);
 58         list = new ArrayList<Fragment>();
 59         Fragment weixinFragment = new WeixinFragment();
 60         Fragment friendFragment = new FriendFragment();
 61         Fragment addressFragment = new AddressFragment();
 62         Fragment settingFragment = new SettingFragment(); 
 63         list.add(weixinFragment);
 64         list.add(friendFragment);
 65         list.add(addressFragment);
 66         list.add(settingFragment);
 67         adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
 68 
 69             public int getCount() {
 70     
 71                 return list.size();
 72             }
 73 
 74             public Fragment getItem(int position) {
 75 
 76                 return list.get(position);
 77             }
 78         };
 79         viewpager.setAdapter(adapter);
 80         viewpager.setOnPageChangeListener(new OnPageChangeListener() {
 81             
 82             @Override
 83             public void onPageSelected(int position) {
 84                 viewpager.setCurrentItem(position);
 85                 resetimage();
 86                 if(position == 0)
 87                 {
 88                     imagebutton_weixin.setImageResource(R.drawable.tab_weixin_pressed);
 89                 }
 90                 else if(position == 1)
 91                 {
 92                     imagebutton_friend.setImageResource(R.drawable.tab_find_frd_pressed);
 93                 }
 94                 else if(position == 2)
 95                 {
 96                     imagebutton_address.setImageResource(R.drawable.tab_address_pressed);
 97                 }
 98                 else if (position == 3) 
 99                 {
100                     imagebutton_setting.setImageResource(R.drawable.tab_settings_pressed);
101                 }
102             }
103             
104             @Override
105             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
106                 // TODO Auto-generated method stub
107                 
108             }
109             
110             @Override
111             public void onPageScrollStateChanged(int state) {
112                 // TODO Auto-generated method stub
113                 
114             }
115         });
116     }
117     private void initEvents() {
118         linear_weixin.setOnClickListener(this);
119         Log.i("main", "2");
120         linear_friend.setOnClickListener(this);
121         linear_address.setOnClickListener(this);
122         linear_setting.setOnClickListener(this);
123     }
124     public void onClick(View v) {
125         resetimage();
126         switch(v.getId())
127         {
128             case R.id.linear_weixin:
129             {
130                 viewpager.setCurrentItem(0);
131                 imagebutton_weixin.setImageResource(R.drawable.tab_weixin_pressed);
132                 break;
133             }
134             case R.id.linear_friend:
135             {
136                 viewpager.setCurrentItem(1);
137                 imagebutton_friend.setImageResource(R.drawable.tab_find_frd_pressed);
138                 break;
139             }
140             case R.id.linear_address:
141             {
142                 viewpager.setCurrentItem(2);
143                 imagebutton_address.setImageResource(R.drawable.tab_address_pressed);
144                 break;
145             }
146             case R.id.linear_setting:
147             {
148                 viewpager.setCurrentItem(3);
149                 imagebutton_setting.setImageResource(R.drawable.tab_settings_pressed);
150                 break;
151             }
152         }
153     }
154     private void resetimage()
155     {
156         imagebutton_weixin.setImageResource(R.drawable.tab_weixin_normal);
157         imagebutton_friend.setImageResource(R.drawable.tab_find_frd_normal);
158         imagebutton_address.setImageResource(R.drawable.tab_address_normal);
159         imagebutton_setting.setImageResource(R.drawable.tab_settings_normal);
160     }
161 }

 

以上是关于tab界面实现方式之ViewPager+FragmentPager的主要内容,如果未能解决你的问题,请参考以下文章

tab界面实现方式之ViewPager+TabPageIndicator

Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager

ViewPager 以编程方式设置当前页面

android-多种方式实现主界面的Tab

Android攻城狮Tab类型

关于Fragment的懒加载问题