利用AppIntro快速制作一个app启动页

前言

制作一个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";
}

最后附上demo地址

一个快速制作app启动页的Demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,327评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • 前言:选择的第1梯队竞品包括:天使汇(http://angelcrunch.com/),创投圈(https://w...
    小草出阅读 3,931评论 0 0
  • 深夜,不点灯,坐在窗前。月色被未知的雾气笼罩,笼罩......直至消失。白天的影子也消失在这无垠的黑暗之中。 眼,...
    矢北阅读 3,211评论 0 2
  • 把自己锁在内心的囚牢,像一只开了门开了窗却不愿飞走的囚鸟。独自徘徊在空荡的牢笼,渴望飞又扇不动翅膀,慢慢失去了渴望...
    摄影师YuQi阅读 4,262评论 4 6