ViewPager+Fragment实现侧滑导航栏

本文实例为大家分享了ViewPager+Fragment实现侧滑导航栏的具体代码,供大家参考,具体内容如下

本文主要整理和记录下

本来想用Gif图片,这里暂时就用图片代替下吧:

ViewPager+Fragment实现侧滑导航栏_第1张图片

Activity:

package com.example.administrator.android006;
 
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
 
import com.example.administrator.android006.Fragment.fragment1;
import com.example.administrator.android006.Fragment.fragment2;
import com.example.administrator.android006.Fragment.fragment3;
import com.example.administrator.android006.Fragment.fragment4;
 
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends FragmentActivity implements View.OnClickListener {
 
    //顶部4个按钮
    private LinearLayout main_home_layout,main_msg_layout,main_pal_layout,main_me_layout;
    private ViewPager main_mViewPager;
    //ViewPager的适配器
    private FragmentPagerAdapter mAdapter;
    //4个Fragment碎片的集合
    private List mFragments = new ArrayList<>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //初始化,加载碎片
        initView();
        initAdapter();
    }
 
    public void initAdapter(){
        mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return mFragments.get(position);
            }
 
            @Override
            public int getCount() {
                return mFragments.size();
            }
        };
        main_mViewPager.setAdapter(mAdapter);
        main_mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 
            }
 
            @Override
            public void onPageSelected(int position) {
                //重置ImageView的颜色
                resetImg();
                //设置选中时的图片
                switch (position) {
                    case 0:
                        ((ImageView) main_home_layout.findViewById(R.id.main_home_img))
                                .setImageResource(R.drawable.home_black);
                        break;
                    case 1:
                        ((ImageView) main_msg_layout.findViewById(R.id.main_msg_img))
                                .setImageResource(R.drawable.msg_black);
                        break;
                    case 2:
                        ((ImageView) main_pal_layout.findViewById(R.id.main_pal_img))
                                .setImageResource(R.drawable.pal_black);
                        break;
                    case 3:
                        ((ImageView) main_me_layout.findViewById(R.id.main_me_img))
                                .setImageResource(R.drawable.me_black);
                        break;
                }
            }
 
            @Override
            public void onPageScrollStateChanged(int state) {
 
            }
        });
    }
 
    //重置ImageView的图片
    protected void resetImg(){
        ((ImageView) main_home_layout.findViewById(R.id.main_home_img))
                .setImageResource(R.drawable.home_gray);
        ((ImageView) main_msg_layout.findViewById(R.id.main_msg_img))
                .setImageResource(R.drawable.msg_gray);
        ((ImageView) main_pal_layout.findViewById(R.id.main_pal_img))
                .setImageResource(R.drawable.pal_gray);
        ((ImageView) main_me_layout.findViewById(R.id.main_me_img))
                .setImageResource(R.drawable.me_gray);
    }
 
    public void initView(){
        main_home_layout = findViewById(R.id.main_home_layout);
        main_msg_layout = findViewById(R.id.main_msg_layout);
        main_pal_layout = findViewById(R.id.main_pal_layout);
        main_me_layout = findViewById(R.id.main_me_layout);
        main_mViewPager = findViewById(R.id.main_mViewPager);
 
        fragment1 vp_fr1 = new fragment1();
        fragment2 vp_fr2 = new fragment2();
        fragment3 vp_fr3 = new fragment3();
        fragment4 vp_fr4 = new fragment4();
        mFragments.add(vp_fr1);
        mFragments.add(vp_fr2);
        mFragments.add(vp_fr3);
        mFragments.add(vp_fr4);
        main_home_layout.setOnClickListener(this);
        main_msg_layout.setOnClickListener(this);
        main_pal_layout.setOnClickListener(this);
        main_me_layout.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            //点击首页时,设置ViewPager的下标为0
            case R.id.main_home_layout:
                main_mViewPager.setCurrentItem(0);
                break;
            //点击消息时,设置ViewPager的下标为1
            case R.id.main_msg_layout:
                main_mViewPager.setCurrentItem(1);
                break;
            //点击好友时,设置ViewPager的下标为2
            case R.id.main_pal_layout:
                main_mViewPager.setCurrentItem(2);
                break;
            //点击我时,设置ViewPager的下标为3
            case R.id.main_me_layout:
                main_mViewPager.setCurrentItem(3);
                break;
        }
    }
}

.xml文件中:



 
    
        
            
            
        
        
            
            
        
        
            
            
        
        
            
            
        
    
    
 
    

这个是ViewPager中的其中一个Fragment:

public class fragment1 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment1,container,false);
    }
}

其Fragment布局:



 
    
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(ViewPager+Fragment实现侧滑导航栏)