ViewPager实现引导页

ViewPager引导页面制作
1、首先需要在layout布局文件中声明ViewPager,V4包是兼容以前版本的。

    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blue_200">
</android.support.v4.view.ViewPager>

2、建立适配器的类,继承自V4包下的PagerAdapter。

声明布局填充器
    LayoutInflater mInflater;

将调用此构造函数的布局加载到mInflater中
    public PagerAdapter(Context context){
        mInflater=LayoutInflater.from(context);
    }


声明一系列的数组,数据类型是View
    private List<View> views;

覆写一系列的函数
    @Override
    public int getCount() {
        return views.size();
    }

判断某个对象是否是View
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }


    //调用父类函数,自动根据位置,调用相关函数,实现了接口的函数,实际上在原函数处执行。
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view=pagercache.get(position);
//一个private SparseArray<View> pagercache=new SparseArray<View>();全局的数组,保存视图

        if(view==null){
            view=mInflater.inflate(R.layout.fragment_food,container,false);
            TextView textView= (TextView) view.findViewById(R.id.foodtext);
            ImageView icons= (ImageView) view.findViewById(R.id.foodview);
            ImageView backgrounds=(ImageView)view.findViewById(R.id.background);
            switch (position){



                case 0:
                    textView.setText(R.string.welcome_small_social);
                    icons.setImageResource(R.drawable.dreamingbear);
                    backgrounds.setImageResource(R.drawable.first);break;

                case 1:
                    textView.setText(R.string.welcome_food);
                    icons.setImageResource(R.drawable.ic_food);
                    backgrounds.setImageResource(R.drawable.food);
                    break;

                case 2:
                        textView.setText(R.string.welcome_wisdom);
                        icons.setImageResource(R.drawable.ic_wisdom);
                        backgrounds.setImageResource(R.drawable.wisdom);
                        break;

                case 3:

                    textView.setText(R.string.welcome_change);
                    icons.setImageResource(R.drawable.ic_talk);
                    backgrounds.setImageResource(R.drawable.opp);
                    break;

                default:break;
            }

            pagercache.append(position,view);

        }
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeViewAt(position);
    }
}

3、在主函数中继承View的点击监听器


//声明ViewPager对象
    private ViewPager vp;
    private PagerAdapter pagerAdapter=new PagerAdapter(this);
    private ImageView banner;
    private SparseArray<View> pagercache=new SparseArray<View>();
    private Button button;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_info);
        init();
    }

//在init函数中初始化对象
    private void init() {
        banner = (ImageView) findViewById(R.id.banner);
        vp= (ViewPager) findViewById(R.id.vp);
        vp.setAdapter(pagerAdapter);
        vp.addOnPageChangeListener(new OnPagerChangeListener());
        button= (Button) findViewById(R.id.enter);

    }


    @Override
    public void onClick(View view) {
        if(view.getId()==R.id.enter){

            Intent intent=new Intent(InfoActivity.this, LaunchActivity.class);
            startActivity(intent);

        }

    }

注册一个监听器,实现ViewPager.OnPageChangeListener
    private class OnPagerChangeListener implements ViewPager.OnPageChangeListener{
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            switch (position){



                case 0:
                    banner.setImageResource(R.drawable.bannerone);

                case 1:
                    banner.setImageResource(R.drawable.bannertwo);
                    break;

                case 2:
                    banner.setImageResource(R.drawable.bannerthree);
                    break;

                case 3:
                    banner.setVisibility(View.INVISIBLE);
                    button.setVisibility(View.VISIBLE);

                    break;

                default:break;
            }


        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }

总结:实现引导页如果使用ViewPager方法,首先我们需要继承PagerAdapter,实现里面的构造函数,及覆写方法。其次,需要实现Listener,添加监听。再将监听器注册到组件上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值