最近做的APP接近尾声了,就是些优化工作了,
我们都知道现在的APP都会有引导页,就是安装之后第一次打开才显示的引导页面(介绍这个软件的几张可以切换的图)
自己做了一下,结合之前学过的
思路很简单,APP的主界面还是作为主Activity,只要新添加一个类来判断是不是第一次打开APP
设主activity 名字为:MainActivity.java 判断是不是第一次打开APP且实现引导页面的类 LoginActivity ,另外还需要一个类 这是中用到的 ZoomOutPageTransformer.java
1.在主activity中,在一开始 先跳转到LoginActivity类中
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 requestWindowFeature(Window.FEATURE_NO_TITLE); 4 setContentView(R.layout.activity_main); 5 startActivity(new Intent(MainActivity.this, LoginActivity.class)); //跳转到LoginActivity类中 6 //初始化 7 init(); 8 initEvent(); 9 //默认显示第一个功能的界面(微信界面)10 setSelect(0);11 }
2.在LoginActivity类中判断是不是第一次打开,如果是,则显示ViewPager切换动画效果
如果不是,则执行finish();语句,直接结束这个Activity 自然的就回到了主Activity中了
LoginActivity代码
1 package com.example.qunxiong; 2 3 import java.io.OutputStream; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 8 9 import android.app.Activity;10 import android.content.Context;11 import android.content.Intent;12 import android.content.SharedPreferences;13 import android.content.SharedPreferences.Editor;14 import android.os.Bundle;15 import android.support.v4.view.PagerAdapter;16 import android.support.v4.view.ViewPager;17 import android.view.View;18 import android.view.ViewGroup;19 import android.view.View.OnClickListener;20 import android.widget.Button;21 import android.widget.ImageView;22 import android.widget.ImageView.ScaleType;23 24 public class LoginActivity extends Activity {25 private ViewPager mviewpager; //控件26 private int[] mImgIds = new int[]{R.drawable.bg_rank_shenqi_0,R.drawable.bg_rank_shenqi_1,R.drawable.bg_rank_shenqi_10};//初始化图片27 private ListmImages = new ArrayList ();28 private Button jump;29 private SharedPreferences preferences;30 private Editor editor;31 private OutputStream os;32 @Override33 protected void onCreate(Bundle savedInstanceState) {34 super.onCreate(savedInstanceState);35 setContentView(R.layout.login);36 preferences = getSharedPreferences("phone", Context.MODE_PRIVATE);37 jump = (Button) findViewById(R.id.jump);38 jump.setOnClickListener(new OnClickListener() { 39 @Override40 public void onClick(View v) {41 // TODO Auto-generated method stub42 finish();43 }44 });45 //判断是不是首次登录,46 if (preferences.getBoolean("firststart", true)) {47 editor = preferences.edit();48 //将登录标志位设置为false,下次登录时不在显示首次登录界面49 editor.putBoolean("firststart", false);50 editor.commit();51 mviewpager = (ViewPager) findViewById(R.id.id_viewpager);52 //为ViewPage切换添加动画效果(3.0以上版本才可以有效果)53 mviewpager.setPageTransformer(true, new ZoomOutPageTransformer());54 55 mviewpager.setAdapter(new PagerAdapter() {56 57 @Override58 public Object instantiateItem(View container, int position) {59 ImageView imageview = new ImageView(LoginActivity.this);60 imageview.setImageResource(mImgIds[position]);61 imageview.setScaleType(ScaleType.CENTER_CROP); //设置图片不变形62 ((ViewGroup) container).addView(imageview);63 mImages.add(imageview);64 return imageview;65 };66 @Override67 public void destroyItem(View container, int position, Object object) {68 // TODO Auto-generated method stub69 70 ((ViewPager) container).removeView(mImages.get(position));71 }72 public boolean isViewFromObject(View view, Object object) {73 // TODO Auto-generated method stub74 return view == object;75 }76 77 @Override78 public int getCount() { //返回图片个数79 // TODO Auto-generated method stub80 return mImgIds.length;81 }82 });83 }84 else 85 {86 finish();87 }88 89 }90 }91
切换动画效果代码
ZoomOutPageTransformer.java
1 package com.example.qunxiong; 2 3 import android.annotation.SuppressLint; 4 import android.support.v4.view.ViewPager; 5 import android.view.View; 6 7 public class ZoomOutPageTransformer implements ViewPager.PageTransformer { 8 private static final float MIN_SCALE = 0.85f; 9 private static final float MIN_ALPHA = 0.5f;10 11 @SuppressLint("NewApi") public void transformPage(View view, float position) {12 int pageWidth = view.getWidth();13 int pageHeight = view.getHeight();14 15 if (position < -1) { // [-Infinity,-1)16 // This page is way off-screen to the left.17 view.setAlpha(0);18 19 } else if (position <= 1) { // [-1,1]20 // Modify the default slide transition to shrink the page as well21 float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));22 float vertMargin = pageHeight * (1 - scaleFactor) / 2;23 float horzMargin = pageWidth * (1 - scaleFactor) / 2;24 if (position < 0) {25 view.setTranslationX(horzMargin - vertMargin / 2);26 } else {27 view.setTranslationX(-horzMargin + vertMargin / 2);28 }29 30 // Scale the page down (between MIN_SCALE and 1)31 view.setScaleX(scaleFactor);32 view.setScaleY(scaleFactor);33 34 // Fade the page relative to its size.35 view.setAlpha(MIN_ALPHA +36 (scaleFactor - MIN_SCALE) /37 (1 - MIN_SCALE) * (1 - MIN_ALPHA));38 39 } else { // (1,+Infinity]40 // This page is way off-screen to the right.41 view.setAlpha(0);42 }43 }44 }