ViewPager实现导航

一、ViewPager介绍
ViewPager可以使视图左右滑动
1、加入ViewPager

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"></android.support.v4.view.ViewPager>

2、加载显示的页卡
将Layout布局转换为View对象

LayoutInflater if = getLayoutInflater().from(this);
if.inflate(resource,root);
View.inflate(context,resource,root);

3、配置Adapter
(1)PagerAdapter 数据源:List
(2)FragmentPagerAdapter 数据源:List
(3)FragmentStatePagerAdapter 数据源:List

二、适配器PagerAdapter

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

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

public class MainActivity extends AppCompatActivity {

    private List<View>viewList;
    private ViewPager pager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        viewList = new ArrayList<>();

        /**
         * 通过View对象去做ViewPager的数据源
         */
        View view1 = View.inflate(this,R.layout.view1,null);
        View view2 = View.inflate(this,R.layout.view2,null);
        View view3 = View.inflate(this,R.layout.view3,null);
        View view4 = View.inflate(this,R.layout.view4,null);

        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);

        //初始化ViewPager
        pager = (ViewPager) findViewById(R.id.pager);
        //创建PagerAdapter的适配器
        MyPagerAdapter adapter = new MyPagerAdapter(viewList);
        //ViewPager加载适配器
        pager.setAdapter(adapter);
    }
}
public class MyPagerAdapter extends PagerAdapter{

    private List<View>viewList;

    public  MyPagerAdapter(List<View>viewList){
        this.viewList = viewList;
    }
    /**
     * 返回的是页卡的数量
     */
    @Override
    public int getCount() {
        return viewList.size();
    }

    /**
     * View是否来自于对象
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    /**
     * 实例化一个页卡
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    /**
     * 销毁一个页卡
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView(viewList.get(position));
    }
}
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"></android.support.v4.view.ViewPager>

三、PagerTabStrip和PagerTitleStrip

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/tab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            ></android.support.v4.view.PagerTabStrip>
        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            ></android.support.v4.view.PagerTitleStrip>

MyPagerAdapter文件里

    private List<View>viewList;
    private List<String>titleList;

    public  MyPagerAdapter(List<View> viewList, List<String> titleList){
        this.viewList = viewList;
        this.titleList = titleList;
    }

MainActivity中

public class MainActivity extends AppCompatActivity {

    private List<View>viewList;
    private ViewPager pager;
    private PagerTabStrip tab;
    private List<String>titleList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        viewList = new ArrayList<>();

        /**
         * 通过View对象去做ViewPager的数据源
         */
        View view1 = View.inflate(this,R.layout.view1,null);
        View view2 = View.inflate(this,R.layout.view2,null);
        View view3 = View.inflate(this,R.layout.view3,null);
        View view4 = View.inflate(this,R.layout.view4,null);

        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);

        //为ViewPager页卡设置标题
        titleList = new ArrayList<String>();
        titleList.add("第一页");
        titleList.add("第二页");
        titleList.add("第三页");
        titleList.add("第四页");

        //为PagerTabStrip设置一些属性
        tab = (PagerTabStrip) findViewById(R.id.tab);
        tab.setBackgroundColor(Color.YELLOW);
        tab.setTextColor(Color.BLUE);
        tab.setDrawFullUnderline(false);//不显示最底下划线
        tab.setTabIndicatorColor(Color.GREEN);

        //初始化ViewPager
        pager = (ViewPager) findViewById(R.id.pager);
        //创建PagerAdapter的适配器
        MyPagerAdapter adapter = new MyPagerAdapter(viewList,titleList);
        //ViewPager加载适配器
        pager.setAdapter(adapter);
    }
}

三、适配器FragmentPagerAdapter

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by USER on 2016/2/1.
 */
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{

    private List<Fragment>fragList;
    private List<String>titleList;
    public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragList, List<String> titleList) {
        super(fm);
        this.fragList = fragList;
        this.titleList = titleList;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titleList.get(position);
    }

    @Override
    public Fragment getItem(int position) {
        return fragList.get(position);
    }

    @Override
    public int getCount() {
        return fragList.size();
    }
}

ViewPager与Fragment作为组合使用方式较多,Fragment的生命周期较全,View的一些销毁和创建的一些逻辑过程,并没有像Fragment那么好控制,如果图方便,只是为了展示,不需要太多输入事件处理,可以拿View去填充ViewPager,业务逻辑复杂,则可用ViewPager与Fragment作为组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值