欢迎引导页面的滑动进入
2016-07-13 11:27
453 查看
在用户首次进入或升级时在欢迎页面一般情况下都会加入一个引导的页面,当滑动到最后一个页面时点击或向右滑动时就能进入主页面,实现代码如下:
因项目的原因,引导页图我就不上传了,另外我将GuideAdapter也复制下,代码一般情况我都不太爱注释的
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))//避免重复进入 b8dd //进入主界面 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)); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories