ViewPager+Fragment实现顶部导航滑动

实现效果:

这个效果就是使用ViewPager+Fragment实现的

导入依赖:

compile 'com.android.support:support-v4:26.+'

因为ViewPager是在v4包里面的,所以要导入这条依赖


XML布局:




    

        

            

                

                


            


        

        

            

                

                


            


        

    

  

  

继承FragmentPagerAdapter

public class MusicPager extends FragmentPagerAdapter{
    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    private List list;


    public MusicPager(FragmentManager fm) {
        super(fm);
       // this.list=list;
    }

    @Override
    public Fragment getItem(int position) {
        return  list.get(position);   //正在显示的页面
    }

    @Override
    public int getCount() {
        return list.size();  //总共有几个页面
    }
}

MainActivity实现滑动

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.example.administrator.mymusic.adapter.MusicPager;

import java.util.ArrayList;
import java.util.List;



public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  private TextView logicTv;
    private TextView onlineTv;
    private ViewPager viewPager;
    private MusicPager  adapter;
    private List list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          //初始化
           initView();
        LogicFragment logic=new LogicFragment();
        OnlieFragment onlie=new OnlieFragment();
        list.add(logic);
        list.add(onlie);
        adapter=new MusicPager(getSupportFragmentManager());
        adapter.setList(list);
        viewPager.setAdapter(adapter);

    }

    private void initView() {
    logicTv = (TextView) findViewById(R.id.main_logic_tv);
    onlineTv = (TextView) findViewById(R.id.main_online_tv);
    viewPager = (ViewPager) findViewById(R.id.main_vp);
    logicTv.setOnClickListener(this);
    onlineTv.setOnClickListener(this);
    viewPager.addOnPageChangeListener(new MyViewPager());
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.main_logic_tv:
                //实现点击TextView切换fragment
                viewPager.setCurrentItem(0);  //切换到
                break;
            case R.id.main_online_tv:
                viewPager.setCurrentItem(1);
                break;
        }
    }
    public class MyViewPager implements ViewPager.OnPageChangeListener{
         //这个方法会在屏幕滑动过程中不断被调用。
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }
        //:这个方法有一个参数position,代表哪个页面被选中。
        @Override
        public void onPageSelected(int position) {
            switch (position) {
                case 0:
                    logicTv.setTextColor(getResources().getColor(R.color.white));
                    onlineTv.setTextColor(getResources().getColor(R.color.white_60P));
                    break;
                case 1:
                    onlineTv.setTextColor(getResources().getColor(R.color.white));
                    logicTv.setTextColor(getResources().getColor(R.color.white_60P));
                    break;
            }

        }
        //这个方法在手指操作屏幕的时候发生变化。有三个值:0(END),1(PRESS) , 2(UP) 。
        @Override
        public void onPageScrollStateChanged(int state) {

        }
    }
}

这样一个ViewPager+Fragment滑动就实现了,很简单也没有很多代码,至于其中扫描出来的音乐,就放在了下篇说明。

另外提供一篇大神写的,ViewPager实现app启动的引导页面,非常好。

[启动屏&&新功能导航](https://github.com/fanatic-mobile-developer-for-android/A-week-to-develop-android-app-plan/tree/master/001_FeatureGuide)

下一篇地址

二次元第一

你可能感兴趣的:(ViewPager使用)