zoukankan      html  css  js  c++  java
  • android使用ViewPager实现欢迎引导页

    android使用ViewPager实现欢迎引导页

    大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面。当第二次启动的时候,则直接进入主界面。 这种效果一般使用ViewPager实现。今天就来为大家介绍一下ViewPager的使用。

    实现步骤:

    使用SharedPerferences来记录是否是第一次启动APP,如果是,则转跳到Guide页面,如果不是第一次启动。就转跳到主Activity.

    MainActivity:

    本Activity作为Logo页面进入,使用handler来实现页面的延迟专跳。对于handler还不太了解的同学,可以来这里学习一下安卓的异步消息传递机制:http://blog.csdn.net/guolin_blog/article/details/9991569 (感谢郭神带来好文章)

    private Handler mHandler = new Handler(){
    
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what){
                    case MAIN:
                        Intent intent = new Intent(MainActivity.this,Main.class);
                        startActivity(intent);
                        finish();
                        break;
                    case GUIDE:
                        Intent intent2 = new Intent(MainActivity.this,GuideView.class);
                        startActivity(intent2);
                        finish();
                        break;
                }
            }
        };

    此外使用SharedPreferences来读取用户启动信息

    mSharedPreferences = getSharedPreferences("conf",MODE_PRIVATE);
    isFirst = mSharedPreferences.getBoolean("first",true);

    之后进行简单的判断,这里不在累赘。

    GuideActivity

    这个界面是引导页的界面,我们首先在其布局文件下添加一个ViewPager之后在java文件中获取到这个ViewPager,并为这个ViewPager添加一个适配器。 这个适配器需要自己继承PagerAdapter来重写,稍后会进行讲解。

     mViewPager = (ViewPager) findViewById(R.id.viewpager);
            ViewPagerAdapter adapter = new ViewPagerAdapter(mList);
            mViewPager.setAdapter(adapter);

    注意这个Adapter的传入参数是一个泛型为View的List。我们先向List里添加我们的View,再为最后一个view的Button添加监听事件,用来转跳到主页面;

    mList = new ArrayList<>();
    View view = LayoutInflater.from(this).inflate(R.layout.layout1,null);
            mList.add(view);
            view = LayoutInflater.from(this).inflate(R.layout.layout2,null);
            mList.add(view);
            view = LayoutInflater.from(this).inflate(R.layout.layout3,null);
            mList.add(view);
            mButton = (Button) view.findViewById(R.id.button_enter);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(GuideView.this,Main.class);
                    startActivity(intent);
                    finish();
    
                }
            });

    ViewPagerAdapter

    这是ViewPager的适配器,继承于PagerAdapter,主要实现两个方法:
    destroyItem();
    instantiateItem();
    顾名思义一个是view去掉时候的方法,一个是添加view的方法。
    这里可以看到一个很熟悉的参数 container,没错,和baseAdapter的参数很像,都是用来缓存当前view的。接下来只需要调用他的removeView和addView即可。需要注意的是,需要向下转型为ViewPager。

     public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager)container).removeView(mList.get(position));
    
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Log.i("wing","viewAdatper here");
            ((ViewPager)container).addView(mList.get(position));
            return mList.get(position);
        }

    另外不要忘记重写他的构造方法。传入一个泛型为view的List

    
        public ViewPagerAdapter(ArrayList list){
            mList = list;
        }

    这样适配器就完成了,大家自己多写几遍就会熟练。对了,别忘了给每个view一个布局文件。

    下面看看效果图:
    这里写图片描述

    源码下载地址

  • 相关阅读:
    Ubuntu 18.04.3 更改系统语言为简体中文
    Centos7.3、nginx环境下部署hugo博客
    Centos7.3 卸载 Nginx(彻底卸载) 并重新安装 Nginx(RPM源yum安装)
    Centos7.3、nginx环境下部署hexo博客(非git推送方式)
    使用阿里云对象存储OSS+PicGo搭建图床
    Hexo博客添加LiveRe评论系统
    使用 jsDelivr CDN加速Github 仓库的图片
    解决win10一开机占用内存就飙到70%的问题
    [Andriod官方训练教程]管理Activity的生命活动之停止和重启一个Activity
    [Andriod官方训练教程]支持不同的设备之支持不同的语言
  • 原文地址:https://www.cnblogs.com/muyuge/p/6333575.html
Copyright © 2011-2022 走看看