前言
制作一个app的启动页真的好烦,但是用了下面的开源库,制作出来的启动页不仅炫酷,而且快速,作者自己就是这么说的哦:
Make a cool intro for your Android app.
这个项目的开源地址是:
AppIntro
这个开源库的显示效果如下:
AppIntro
废话不多说,直接看看如何使用吧。
使用
添加JitPack仓库
repositories {
...
maven { url 'https://jitpack.io' }
}
添加依赖
dependencies {
compile 'com.github.apl-devs:appintro:v4.2.2'
}
新建一个Activity继承 AppIntro
public class AppIntroActivity extends AppIntro {
@Override
public void init(@Nullable Bundle savedInstanceState) {
addSlide(SlideFragment.newInstance(R.layout.intro1));
addSlide(SlideFragment.newInstance(R.layout.intro2));
addSlide(SlideFragment.newInstance(R.layout.intro3));
addSlide(SlideFragment.newInstance(R.layout.intro4));
setSeparatorColor(getResources().getColor(R.color.colorAccent));
setVibrateIntensity(30);
setSkipText("跳过");
setDoneText("完成");
}
@Override
public void onSkipPressed() {
//当执行跳过动作时触发
Intent intent = new Intent(AppIntroActivity.this, MainActivity.class);
startActivity(intent);
SpUtils.putBoolean(AppIntroActivity.this, AppConstants.FIRST_OPEN, true);
finish();
}
@Override
public void onNextPressed() {
//当执行下一步动作时触发
}
@Override
public void onDonePressed() {
//当执行完成动作时触发
Intent intent = new Intent(AppIntroActivity.this, MainActivity.class);
startActivity(intent);
SpUtils.putBoolean(AppIntroActivity.this, AppConstants.FIRST_OPEN, true);
finish();
}
@Override
public void onSlideChanged() {
//当执行变化动作时触发
}
}
千万注意不要使用 setContentView()方法
其中
R.layout.intro1/R.layout.intro2/R.layout.intro3/R.layout.intro4四个就是你要展示的启动页,直接做好相应的布局即可。
当然也可以进行一些其他的设置,比如如下代码用来设置下划线的颜色
setSeparatorColor(getResources().getColor(R.color.colorAccent));
以下方法设置作者默认封装好的动画效果
setFadeAnimation()
setZoomAnimation()
setFlowAnimation()
setSlideOverAnimation()
setDepthAnimation()
最后确定是不是第一次启动应用
在MainActivity中添加如下代码
// 判断是否是第一次开启应用
boolean isFirstOpen = SpUtils.getBoolean(this, AppConstants.FIRST_OPEN);
Log.d(TAG, "onCreate: " + isFirstOpen);
// 如果是第一次启动,则先进入功能引导页
if (!isFirstOpen) {
Intent intent = new Intent(this, AppIntroActivity.class);
startActivity(intent);
finish();
return;
}
该案例中使用到的工具类
SpUtils.java
public class SpUtils {
private static final String spFileName = "app";
public static String getString(Context context, String strKey) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
String result = setPreferences.getString(strKey, "");
return result;
}
public static String getString(Context context, String strKey,
String strDefault) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
String result = setPreferences.getString(strKey, strDefault);
return result;
}
public static void putString(Context context, String strKey, String strData) {
SharedPreferences activityPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = activityPreferences.edit();
editor.putString(strKey, strData);
editor.commit();
}
public static Boolean getBoolean(Context context, String strKey) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
Boolean result = setPreferences.getBoolean(strKey, false);
return result;
}
public static Boolean getBoolean(Context context, String strKey,
Boolean strDefault) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
Boolean result = setPreferences.getBoolean(strKey, strDefault);
return result;
}
public static void putBoolean(Context context, String strKey,
Boolean strData) {
SharedPreferences activityPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = activityPreferences.edit();
editor.putBoolean(strKey, strData);
editor.commit();
}
public static int getInt(Context context, String strKey) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
int result = setPreferences.getInt(strKey, -1);
return result;
}
public static int getInt(Context context, String strKey, int strDefault) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
int result = setPreferences.getInt(strKey, strDefault);
return result;
}
public static void putInt(Context context, String strKey, int strData) {
SharedPreferences activityPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = activityPreferences.edit();
editor.putInt(strKey, strData);
editor.commit();
}
public static long getLong(Context context, String strKey) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
long result = setPreferences.getLong(strKey, -1);
return result;
}
public static long getLong(Context context, String strKey, long strDefault) {
SharedPreferences setPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
long result = setPreferences.getLong(strKey, strDefault);
return result;
}
public static void putLong(Context context, String strKey, long strData) {
SharedPreferences activityPreferences = context.getSharedPreferences(
spFileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = activityPreferences.edit();
editor.putLong(strKey, strData);
editor.commit();
}
}
SlideFragment
public class SlideFragment extends Fragment {
private static final String ARG_LAYOUT_RES_ID = "layoutResId";
public static SlideFragment newInstance(int layoutResId) {
SlideFragment slideFragment = new SlideFragment();
Bundle args = new Bundle();
args.putInt(ARG_LAYOUT_RES_ID, layoutResId);
slideFragment.setArguments(args);
return slideFragment;
}
private int layoutResId;
public SlideFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null && getArguments().containsKey(ARG_LAYOUT_RES_ID))
layoutResId = getArguments().getInt(ARG_LAYOUT_RES_ID);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutResId, container, false);
}
}
AppConstants
public class AppConstants {
public static final String FIRST_OPEN = "first_open";
}