学习|Android利用Appintro快速制作启动界面(附源码)
- 2020 年 1 月 2 日
- 笔记
学更好的别人,
做更好的自己。
——《微卡智享》

本文长度为3418字,预计阅读8分钟
Appintro启动界面
每当我们程序更新时,一般在第一次进入程序时会有个快速启动界面,用于介绍程序最新的更新东西,及一些简单的宣传,单独设置View进行播放每次换新就感觉很麻烦,在Android中Appintro这个开源库可以快速并简单的实现我们想要的这个效果。

实现效果

Appintro使用核心方法

微卡智享
添加依赖
在程序的build.gradle中加入Appintro的依赖项
allprojects { repositories { maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.AppIntro:AppIntro:5.1.0' }

Activity中注意事项
我们做启动画需要新建一个Activity并继承自Appintro
注:这里我们要把setContentView(R.layout.activity_intro)屏蔽

添加启动页
添加启动页的核心代码是addSlide
public void addSlide(@NonNull Fragment fragment) { if (isRtl()) fragments.add(0, fragment); else fragments.add(fragment); if (isWizardMode) { setOffScreenPageLimit(fragments.size()); } mPagerAdapter.notifyDataSetChanged(); }
从上面的源码中我们可以看到,addSlide中我们要添加的就是一个Fragment,要生成Fragment有两种方法:
- 使用Appintro自己的SliderPage
- 使用自定义布局的Fragment
使用Appintro自已的SliderPage
这个相对来说非常简单,创建SliderPage后,设置标题,说明,图片来源和背景色就可以,样式是固定的。
val sliderPage = SliderPage() //设置标题 sliderPage.title = "标题一" //设置说明 sliderPage.description = "第一个测试说明" //设置图片来源 sliderPage.imageDrawable = R.drawable.person //设置背景颜色 sliderPage.bgColor = Color.TRANSPARENT addSlide(AppIntroFragment.newInstance(sliderPage))
样式如下

使用自定义布局的Fragment
自定义布局的Fragment,首先要自己建一个继承自Fragment的类
package dem.vac.appintrodemo import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment /** * 作者:Vaccae * 创建时间:2019-12-19 14:44 * 功能模块说明: */ class SliderFragment : Fragment() { companion object { private val ARG_LAYOUT_ID = "layoutId" private var layoutId = 0 fun newInstance(layoutid: Int): SliderFragment { val slider = SliderFragment() val args = Bundle() args.putInt(ARG_LAYOUT_ID, layoutid) slider.arguments = args return slider } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments ?: return if (arguments!!.containsKey(ARG_LAYOUT_ID)) { layoutId = arguments!!.getInt(ARG_LAYOUT_ID) } } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // return super.onCreateView(inflater, container, savedInstanceState) return inflater.inflate(layoutId, container, false) } }
然后自己设置layout的布局文件,再通过一行代码添加即可
//添加自定义的Fragment addSlide(SliderFragment.newInstance(R.layout.activity_intro))
样式如下

设置分割线颜色
//设置分割线颜色 setSeparatorColor(Color.WHITE)
设置切换页面时的动画效果
//动画效果 setFadeAnimation() setZoomAnimation() setFlowAnimation() setSlideOverAnimation() setDepthAnimation()
上面的几种动画效果,可以根据自己的喜好定义,具体自己测试下就看出来了,个人还是比较喜欢setFlowAnimation
Appintro重写事件
继承的Appintro的类里面可以重写点击跳过,完成及页面切换时触发事件
//当执行跳过动作时触发 override fun onSkipPressed(currentFragment: Fragment?) { super.onSkipPressed(currentFragment) Toast.makeText(this, "跳过", Toast.LENGTH_SHORT).show() finish() } //当执行完成动作时触发 override fun onDonePressed(currentFragment: Fragment?) { super.onDonePressed(currentFragment) Toast.makeText(this, "完成", Toast.LENGTH_SHORT).show() finish() } //当执行页面切换时触发 override fun onSlideChanged(oldFragment: Fragment?, newFragment: Fragment?) { super.onSlideChanged(oldFragment, newFragment) // Toast.makeText(this, "页面跳转", // Toast.LENGTH_SHORT).show() }
判断是否第一次启动
var isfirst = SpHelper.getBoolean(this, title, true) if (isfirst) { val intent = Intent(this, IntroActivity::class.java) startActivity(intent) SpHelper.putBoolean(this, title, false) }
上面的SpHelper这个类在文章《学习|Android中SharedPreferences轻量数据存储》中有写,可以从那篇中参考,这样我们的一个快速启动的页面就完成了。
源码地址
https://github.com/Vaccae/AppintroDemo.git
完

扫描二维码
获取更多精彩
微卡智享

“ 往期文章 ”
学习|Android中SharedPreferences轻量数据存储