学习|Android利用Appintro快速制作启动界面(附源码)

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为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有两种方法:

  1. 使用Appintro自己的SliderPage
  2. 使用自定义布局的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轻量数据存储

学习|Android侧滑框架SmartSwipe使用

实战|仿应用宝下载并安装App(附源码)