欢迎引导页面的滑动进入

来源:互联网 发布:淘宝订单险有什么好处 编辑:程序博客网 时间:2024/06/08 00:23

在用户首次进入或升级时在欢迎页面一般情况下都会加入一个引导的页面,当滑动到最后一个页面时点击或向右滑动时就能进入主页面,实现代码如下:

public class WelcomeActivity extends Activity {
    private final int[] imageIDs = new int[]{R.mipmap.guide_image_01, R.mipmap.guide_image_02,            R.mipmap.guide_image_03};    private volatile boolean isLastPage;//viewPager是否跑到最后一页    @ViewInject(R.id.viewPager)//其实就是findViewByID    private ViewPager viewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_welcome);        startGuidePage();    }    @Override    protected void onDestroy() {        super.onDestroy();    }    /**     * 开启引导页     */    private void startGuidePage() {        List<ImageView> views = new ArrayList<>();        ImageView imageView;        for (int i = 0; i < imageIDs.length; i++) {            imageView = new ImageView(this);            imageView.setScaleType(ImageView.ScaleType.FIT_XY);            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);            imageView.setImageResource(imageIDs[i]);            imageView.setLayoutParams(params);            if (i == imageIDs.length - 1) {                //点击进入                imageView.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        goMainActivity();                    }                });            }            views.add(imageView);        }        viewPager.setVisibility(View.VISIBLE);        viewPager.setAdapter(new GuideAdapter(views));        final EdgeEffectCompat edgeEffectCompat = getEdgeEffectCompat(viewPager);        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            AtomicBoolean isGoMainActivity = new AtomicBoolean(false);            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                isLastPage = position == imageIDs.length - 1;            }            @Override            public void onPageScrollStateChanged(int state) {                boolean isIdleState = (state == ViewPager.SCROLL_STATE_IDLE);//viewPager是否处于闲置状态                if (isLastPage && isIdleState &&//处于最后页 并处于闲置状态(也可认为是手指离开了屏幕)                        edgeEffectCompat != null && !edgeEffectCompat.isFinished()//表示viewPager右边缘色已经展示                        && isGoMainActivity.compareAndSet(false, true))//避免重复进入                    //进入主界面                    goMainActivity();            }        });    }    /**     * viewPager右边缘色 对象     */    private EdgeEffectCompat getEdgeEffectCompat(ViewPager viewPager) {        EdgeEffectCompat edgeEffectCompat = null;        try {            Field mRightEdge = viewPager.getClass().getDeclaredField("mRightEdge");            mRightEdge.setAccessible(true);            edgeEffectCompat = (EdgeEffectCompat) mRightEdge.get(viewPager);        } catch (Exception e) {            e.printStackTrace();        }        return edgeEffectCompat;    }    /**     * 进入主界面     */    private void goMainActivity() {        startActivity(new Intent(this, MainActivity.class));        finish();    }}

因项目的原因,引导页图我就不上传了,另外我将GuideAdapter也复制下,代码一般情况我都不太爱注释的安静
public class GuideAdapter extends PagerAdapter {    private List<ImageView> views;    public GuideAdapter(List<ImageView> views){        this.views=views;    }    @Override    public int getCount() {        return views.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        container.addView(views.get(position));        return views.get(position);    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView(views.get(position));    }}


0 0
原创粉丝点击