引导页ViewPager当滑动到最后一页,再继续滑动切换页面的效果实现

本文还包括是不是第一次启动的判断
引导页ViewPager当滑动到最后一页,再继续滑动切换页面的效果实现,还有在滑动到最后一页显示一个button,点击button也可以实现跳转

上代码


/**
 *
 * 引导页界面(viewpager)
 * */
public class IntroActivity extends Activity implements View.OnClickListener{


    //TODO 图片资源(测试用小绿机器人,正式后要替换)
    int[] image={R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};

    List<View> images=new ArrayList<>();
    private ViewPager vp;
    private Button bt;

    private int currentPage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//      根据版本号判断是不是第一次使用
        PackageInfo info=null;
        try {
            info=getPackageManager().getPackageInfo(getPackageName(),0);

        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        final int currentVersion = info.versionCode;
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);

        Float lastVersion = sp.getFloat("VERSION_KEY", 0);

        if (currentVersion>lastVersion){
//            第一次启动将当前版本进行存储
            sp.edit().putFloat("VERSION_KEY",currentVersion).commit();
            setContentView(R.layout.activity_intro);
            //将图片添加到list<view>集合中
            for (int i = 0; i < image.length; i++) {
                ImageView iv=new ImageView(this);
                iv.setImageResource(image[i]);
                iv.setScaleType(ImageView.ScaleType.FIT_XY);
                images.add(iv);

            }

            vp = (ViewPager) findViewById(R.id.vp);
            bt = (Button) findViewById(R.id.gointo_app_bt);

            GuildPagerAdapter adapter=new GuildPagerAdapter(images);
            vp.setAdapter(adapter);

            vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                }

                @Override
                public void onPageSelected(int position) {
                //currentpage后面要用
                    currentPage=position;
                    if(position==2){
                        //设置可见,如果用按钮也可以实现activity的跳转,两种跳转功能都具备
                      bt.setVisibility(View.VISIBLE);
                        bt.setOnClickListener(IntroActivity.this);
                    }else {
                        bt.setVisibility(View.GONE);
                    }
                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });
            //设置ViewPager的滑动监听,为了滑动到最后一页,继续滑动实现页面的跳转
            vp.setOnTouchListener(new View.OnTouchListener() {
                float startX;

                float endX;


                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            startX = event.getX();

                            break;
                        case MotionEvent.ACTION_UP:
                            endX = event.getX();
//获取屏幕的宽度
                            int width = ScreenUtils.getScreenWidth(getApplicationContext());
                            //根据滑动的距离来切换界面
                            if (currentPage == 2 && startX - endX >= (width / 5)) {

                                startApp();//切换界面
                            }

                            break;
                    }
                    return false;
                }
            });

        }else {
//            非第一次启动直接跳转
            startApp();
        }




    }

    private void startApp() {
        Intent intent=new Intent(this,SplashActivity.class);
        startActivity(intent);
        finish();
    }


//button 点击事件
    public void onClick(View view) {
        startApp();

    }

    /**
     *@author Administrator
     *@date 2016/12/2 0002  上午 9:26
     *@Description viewpager 的适配器,内容不多直接写内部类了
     *@param
     *@retrun
    */
    public class GuildPagerAdapter extends PagerAdapter{
        List<View> list;

        public GuildPagerAdapter(List<View> list) {
            this.list = list;
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(list.get(position));
            return list.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(list.get(position));

        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }
    }

}

布局

<android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/vp"></android.support.v4.view.ViewPager>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/gointo_app_bt"
        android:background="@drawable/gointo_app_bg"
        android:text="点击进入App"
        android:textSize="28sp"
        android:onClick="onClick"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:visibility="gone"/>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值