- public class WelcomeActivity extends Activity implements OnClickListener,OnPageChangeListener{
- private ViewPager viewPager;
- private LinearLayout pointLayout;
- private ViewPagerAdapter adapter;
- private List views;
- private Button startBtn;
- private int[] guidePics = { R.layout.view_guide1, R.layout.view_guide2,
- R.layout.view_guide3 };// 引导页中的三张图片布局
- private ImageView[] dots;// 代表视图索引的圆圈
- private int currentIndex;// 表示前一个视图的索引
- private Context context;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Windows.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_welcome);
- context = WelcomeActivity.this;
- if (Build.VERSION.SDK_INT>= 19) {// Android 4.4 以上 沉浸式状态栏
- Windows Windows = getWindow();
- Windows.addFlags(67108864);
- }
- AndroidBug5497Workaround.assistActivity(WelcomeActivity.this);// 解决沉浸式 bug
- viewPager = (ViewPager) findViewById(R.id.viewPager);
- pointLayout=(LinearLayout) findViewById(R.id.pointLayout);
- views = new ArrayList();
- initGuidePage();
- setViewPagerAdapter();
- initDots();
- }
- @Override
- protected void onPause() {
- super.onPause();
- // 如果切换到后台, 就设置下次不进入功能引导页
- // SharePerferenceUtil.setFirstLogin(context, false);
- }
- // 初始化引导页视图
- private void initGuidePage() {
- for (int i = 0; i <guidePics.length; i++) {
- View view=LayoutInflater.from(context).inflate(guidePics[i], null);
- if(i==guidePics.length-1){
- startBtn=(Button) view.findViewById(R.id.btnStart);
- startBtn.setTag("start");
- startBtn.setOnClickListener(this);
- }
- views.add(view);
- }
- }
- // 设置 ViewPager 适配器
- private void setViewPagerAdapter() {
- adapter=new ViewPagerAdapter(views);
- viewPager.setAdapter(adapter);
- viewPager.setOnPageChangeListener(this);
- }
- // 初始化圆圈
- private void initDots() {
- dots=new ImageView[guidePics.length];
- for (int i = 0; i < guidePics.length; i++) {
- dots[i]=(ImageView) pointLayout.getChildAt(i);
- dots[i].setEnabled(true);
- dots[i].setOnClickListener(this);
- dots[i].setTag(i);
- }
- currentIndex=0;
- dots[currentIndex].setEnabled(false);
- }
- @Override
- public void onClick(View v) {
- if(v.getTag().equals("start")){
- enterToLoginActivity();// 点击 "立即开启" 进入登陆页面
- return;
- }
- // 圆圈点击后执行
- int position=(Integer) v.getTag();
- setCurrentView(position);
- setCurrentDot(position);
- }
- // 设置当前视图
- private void setCurrentView(int position) {
- if(position<0||position>guidePics.length-1){
- return;
- }
- viewPager.setCurrentItem(position);
- }
- // 设置当前圆圈状态
- private void setCurrentDot(int position) {
- if(position<0||position>guidePics.length-1||currentIndex==position){
- return;
- }
- dots[position].setEnabled(false);
- dots[currentIndex].setEnabled(true);
- currentIndex=position;
- }
- // 通过 SplashActivity 中转进入 LoginActivity
- private void enterToLoginActivity() {
- Intent intent=new Intent(context,SplashActivity.class);
- startActivity(intent);
- SharePerferenceUtil.setFirstLogin(context, false);// 设置不是第一次登陆
- finish();
- overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- // arg0 ==1 的时辰默示正在滑动, arg0==2 的时辰默示滑动完毕了, arg0==0 的时辰默示什么都没做.
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- // arg0 : 当前页面, 及你点击滑动的页面
- // arg1: 当前页面偏移的百分比
- // arg2: 当前页面偏移的像素位置
- }
- @Override
- public void onPageSelected(int position) {
- setCurrentDot(position);// 设置圆圈状态
- }
- }
来源: http://www.jianshu.com/p/38ded1779710