赞
踩
学更好的别人,
做更好的自己。
——《微卡智享》
本文长度为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
完
扫描二维码
获取更多精彩
微卡智享
「 往期文章 」
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。