學習|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(附源碼)