前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习|Android利用Appintro快速制作启动界面(附源码)

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

作者头像
Vaccae
修改2020-01-03 14:43:23
1.6K0
修改2020-01-03 14:43:23
举报
文章被收录于专栏:微卡智享

Appintro启动界面

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

实现效果

Appintro使用核心方法

添加依赖

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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后,设置标题,说明,图片来源和背景色就可以,样式是固定的。

代码语言:javascript
复制
         val sliderPage = SliderPage()
        //设置标题
        sliderPage.title = "标题一"
        //设置说明
        sliderPage.description = "第一个测试说明"
        //设置图片来源
        sliderPage.imageDrawable = R.drawable.person
        //设置背景颜色
        sliderPage.bgColor = Color.TRANSPARENT
        addSlide(AppIntroFragment.newInstance(sliderPage))

样式如下

使用自定义布局的Fragment

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

代码语言:javascript
复制
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的布局文件,再通过一行代码添加即可

代码语言:javascript
复制
//添加自定义的Fragment
addSlide(SliderFragment.newInstance(R.layout.activity_intro))

样式如下

设置分割线颜色

代码语言:javascript
复制
//设置分割线颜色
setSeparatorColor(Color.WHITE)

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

代码语言:javascript
复制
//动画效果
setFadeAnimation()
setZoomAnimation()
setFlowAnimation()
setSlideOverAnimation()
setDepthAnimation()

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

Appintro重写事件

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

代码语言:javascript
复制
//当执行跳过动作时触发
    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()

    }

判断是否第一次启动

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档