当前位置:   article > 正文

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

setcontentview(r.layout.activity_intro)屏蔽

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为3418,预计阅读8分钟


Appintro启动界面

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

实现效果

Appintro使用核心方法

微卡智享

添加依赖

在程序的build.gradle中加入Appintro的依赖项

  1. allprojects {
  2.         repositories {
  3.             maven { url 'https://jitpack.io' }
  4.         }
  5.     }
  6. dependencies {
  7.     implementation 'com.github.AppIntro:AppIntro:5.1.0'
  8. }

Activity中注意事项

我们做启动画需要新建一个Activity并继承自Appintro

注:这里我们要把setContentView(R.layout.activity_intro)屏蔽

添加启动页

添加启动页的核心代码是addSlide

  1. public void addSlide(@NonNull Fragment fragment) {
  2.         if (isRtl())
  3.             fragments.add(0, fragment);
  4.         else
  5.             fragments.add(fragment);
  6.         if (isWizardMode) {
  7.             setOffScreenPageLimit(fragments.size());
  8.         }
  9.         mPagerAdapter.notifyDataSetChanged();
  10.     }

从上面的源码中我们可以看到,addSlide中我们要添加的就是一个Fragment,要生成Fragment有两种方法:

  1. 使用Appintro自己的SliderPage

  2. 使用自定义布局的Fragment

使用Appintro自已的SliderPage

这个相对来说非常简单,创建SliderPage后,设置标题,说明,图片来源和背景色就可以,样式是固定的。

  1.          val sliderPage = SliderPage()
  2.         //设置标题
  3.         sliderPage.title = "标题一"
  4.         //设置说明
  5.         sliderPage.description = "第一个测试说明"
  6.         //设置图片来源
  7.         sliderPage.imageDrawable = R.drawable.person
  8.         //设置背景颜色
  9.         sliderPage.bgColor = Color.TRANSPARENT
  10.         addSlide(AppIntroFragment.newInstance(sliderPage))

样式如下

使用自定义布局的Fragment

自定义布局的Fragment,首先要自己建一个继承自Fragment的类

  1. package dem.vac.appintrodemo
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.fragment.app.Fragment
  7. /**
  8.  * 作者:Vaccae
  9.  * 创建时间:2019-12-19 14:44
  10.  * 功能模块说明:
  11.  */
  12. class SliderFragment : Fragment() {
  13.     companion object {
  14.         private val ARG_LAYOUT_ID = "layoutId"
  15.         private var layoutId = 0
  16.         fun newInstance(layoutid: Int): SliderFragment {
  17.             val slider = SliderFragment()
  18.             val args = Bundle()
  19.             args.putInt(ARG_LAYOUT_ID, layoutid)
  20.             slider.arguments = args
  21.             return slider
  22.         }
  23.     }
  24.     override fun onCreate(savedInstanceState: Bundle?) {
  25.         super.onCreate(savedInstanceState)
  26.         arguments ?: return
  27.         if (arguments!!.containsKey(ARG_LAYOUT_ID)) {
  28.             layoutId = arguments!!.getInt(ARG_LAYOUT_ID)
  29.         }
  30.     }
  31.     override fun onCreateView(
  32.         inflater: LayoutInflater,
  33.         container: ViewGroup?,
  34.         savedInstanceState: Bundle?
  35.     ): View? {
  36. // return super.onCreateView(inflater, container, savedInstanceState)
  37.         return inflater.inflate(layoutId, container, false)
  38.     }
  39. }

然后自己设置layout的布局文件,再通过一行代码添加即可

  1. //添加自定义的Fragment
  2. addSlide(SliderFragment.newInstance(R.layout.activity_intro))

样式如下

设置分割线颜色

  1. //设置分割线颜色
  2. setSeparatorColor(Color.WHITE)

设置切换页面时的动画效果

  1. //动画效果
  2. setFadeAnimation()
  3. setZoomAnimation()
  4. setFlowAnimation()
  5. setSlideOverAnimation()
  6. setDepthAnimation()

上面的几种动画效果,可以根据自己的喜好定义,具体自己测试下就看出来了,个人还是比较喜欢setFlowAnimation

Appintro重写事件

继承的Appintro的类里面可以重写点击跳过,完成及页面切换时触发事件

  1. //当执行跳过动作时触发
  2.     override fun onSkipPressed(currentFragment: Fragment?) {
  3.         super.onSkipPressed(currentFragment)
  4.         Toast.makeText(this, "跳过",
  5.             Toast.LENGTH_SHORT).show()
  6.         finish()
  7.     }
  8.     //当执行完成动作时触发
  9.     override fun onDonePressed(currentFragment: Fragment?) {
  10.         super.onDonePressed(currentFragment)
  11.         Toast.makeText(this, "完成",
  12.             Toast.LENGTH_SHORT).show()
  13.         finish()
  14.     }
  15.     //当执行页面切换时触发
  16.     override fun onSlideChanged(oldFragment: Fragment?, newFragment: Fragment?) {
  17.         super.onSlideChanged(oldFragment, newFragment)
  18. // Toast.makeText(this, "页面跳转",
  19. // Toast.LENGTH_SHORT).show()
  20.     }

判断是否第一次启动

  1. var isfirst = SpHelper.getBoolean(this, title, true)
  2.         if (isfirst) {
  3.             val intent = Intent(this, IntroActivity::class.java)
  4.             startActivity(intent)
  5.             SpHelper.putBoolean(this, title, false)
  6.         }

上面的SpHelper这个类在文章《学习|Android中SharedPreferences轻量数据存储》中有写,可以从那篇中参考,这样我们的一个快速启动的页面就完成了。

源码地址

https://github.com/Vaccae/AppintroDemo.git

扫描二维码

获取更多精彩

微卡智享

「 往期文章 」

学习|Android中SharedPreferences轻量数据存储

学习|Android侧滑框架SmartSwipe使用

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/144639
推荐阅读