Android最簡(jiǎn)單的狀態(tài)切換布局實(shí)現(xiàn)教程
前言
項(xiàng)目中經(jīng)常遇到這樣一種情況,新打開(kāi)的界面需要加載數(shù)據(jù),存在多種狀態(tài)的結(jié)果,需要根據(jù)不同結(jié)果展示界面,這個(gè)過(guò)程歸納起來(lái)可以分為五種狀態(tài):初始狀態(tài)、請(qǐng)求狀態(tài)、空數(shù)據(jù)狀態(tài)、網(wǎng)絡(luò)錯(cuò)誤狀態(tài)、成功請(qǐng)求狀態(tài)。 如果多個(gè)界面都存在這個(gè)流程,那么封裝整個(gè)過(guò)程的調(diào)用就很有必要了,既可以簡(jiǎn)化調(diào)用過(guò)程,又可以很方便的管理整個(gè)流程。
下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
功能簡(jiǎn)介
- 正在加載數(shù)據(jù)
- 數(shù)據(jù)加載失敗
- 數(shù)據(jù)加載為空
- 網(wǎng)絡(luò)加載失敗
- 重試點(diǎn)擊事件
- 支持自定義布局
效果圖展示

最簡(jiǎn)單的使用方式
1.Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2.Add the dependency
dependencies {
implementation 'com.github.pengMaster:MultipleLayout:1.0.0'
}
3.在布局中添加
<king.bird.multipleview.MultipleLayout android:id="@+id/mMultipleLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--任意內(nèi)容--> <TextView android:id="@+id/mTvContent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="@string/content" /> </king.bird.multipleview.MultipleLayout>
注意: MultipleLayout 可做為沒(méi)有標(biāo)題欄的最外層布局,內(nèi)部可包裹任何內(nèi)容
4.代碼中使用
//重試點(diǎn)擊事件
mMultipleLayout.setOnRetryClickListener {
//模擬網(wǎng)絡(luò)請(qǐng)求
Toast.makeText(this@MainActivity,"正在加載。。",Toast.LENGTH_SHORT).show()
}
//數(shù)據(jù)為空
mMultipleLayout.showEmpty()
//加載失敗
mMultipleLayout.showError()
//正在加載
mMultipleLayout.showLoading()
//網(wǎng)絡(luò)加載失敗
mMultipleLayout.showNoNetwork()
//顯示內(nèi)容
mMultipleLayout.showContent()
擴(kuò)展功能
1.自定義狀態(tài)布局
<king.bird.multipleview.MultipleLayout android:id="@+id/multipleStatusView" android:layout_width="match_parent" android:layout_height="match_parent" <!--自定義布局--> app:emptyView="@layout/layout_empty_view" app:errorView="@layout/layout_error_view" app:loadingView="@layout/layout_loading_view" app:noNetworkView="@layout/layout_network_view"> </king.bird.multipleview.MultipleLayout>
2.代碼引入布局
//數(shù)據(jù)為空 showEmpty(int layoutId, ViewGroup.LayoutParams layoutParams) showEmpty(View view, ViewGroup.LayoutParams layoutParams) //加載失敗 showError(int layoutId, ViewGroup.LayoutParams layoutParams) showError(View view, ViewGroup.LayoutParams layoutParams) //正在加載 showLoading(int layoutId, ViewGroup.LayoutParams layoutParams) showLoading(View view, ViewGroup.LayoutParams layoutParams) //網(wǎng)絡(luò)加載失敗 void showNoNetwork(int layoutId, ViewGroup.LayoutParams layoutParams) showNoNetwork(View view, ViewGroup.LayoutParams layoutParams)
3.擴(kuò)展
后續(xù)添加各種彈框
參與貢獻(xiàn)
- Fork 本項(xiàng)目
- 新建 Feat_xxx 分支
- 提交代碼
- 新建 Pull Request
github地址
項(xiàng)目地址:https://github.com/pengMaster/MultipleLayout
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- 詳解 Android中Libgdx使用ShapeRenderer自定義Actor解決無(wú)法接收到Touch事件的問(wèn)題
- 詳解Android Libgdx中ScrollPane和Actor事件沖突問(wèn)題的解決辦法
- Android使用libgdx實(shí)現(xiàn)模擬方向鍵控制角色移動(dòng)的方法
- Android 游戲引擎libgdx 資源加載進(jìn)度百分比顯示案例分析
- Android drawable微技巧,你不知道的drawable細(xì)節(jié)
- Android指紋識(shí)別API講解,一種更快更好的用戶體驗(yàn)
- Android在Kotlin中更好地使用LitePal
- Android Studio輕松構(gòu)建自定義模板的步驟記錄
- 詳解Android 檢測(cè)權(quán)限的三種寫(xiě)法
- android自定義環(huán)形對(duì)比圖效果
- Libgdx解決部分Android機(jī)型鎖屏崩潰的方法
相關(guān)文章
Android 使用ViewPager自動(dòng)滾動(dòng)循環(huán)輪播效果
本文主要給大家介紹viewpager自動(dòng)播放,循環(huán)滾動(dòng)的效果,對(duì)android viewpager滾動(dòng)相關(guān)知識(shí)感興趣的朋友可以參考下本篇文章2015-11-11
Android自定義UI實(shí)現(xiàn)微信語(yǔ)音
這篇文章主要為大家詳細(xì)介紹了Android自定義UI實(shí)現(xiàn)微信語(yǔ)音的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android應(yīng)用中使用ViewPager和ViewPager指示器來(lái)制作Tab標(biāo)簽
這篇文章主要介紹了Android中使用ViewPager和ViewPager指示器來(lái)制作Tab標(biāo)簽的方法,ViewPager指示器ViewPageIndicator是一個(gè)開(kāi)源庫(kù),文中舉了一個(gè)仿網(wǎng)易新聞客戶端Tab標(biāo)簽的例子,需要的朋友可以參考下2016-03-03
android實(shí)現(xiàn)圓環(huán)倒計(jì)時(shí)控件
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)圓環(huán)倒計(jì)時(shí)控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
Android開(kāi)發(fā)技巧之ViewStub控件惰性裝載
布局文件中的控件并不一定在程序啟動(dòng)時(shí)全都用到,有一些控件只在特定的情況下才會(huì)被使用到;我們急需一種機(jī)制來(lái)改變<include>標(biāo)簽的這種行為,只在需要時(shí)裝載控件。這種機(jī)制就是本節(jié)要介紹的ViewStub控件2013-01-01
Android實(shí)現(xiàn)多媒體之播放音樂(lè)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多媒體之播放音樂(lè)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android自動(dòng)測(cè)試工具M(jìn)onkey
Monkey是Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等),實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試。Monkey測(cè)試是一種為了測(cè)試軟件的穩(wěn)定性、健壯性的快速有效的方法2016-01-01
新版Android Studio3.6找不到R.java怎么處理
這篇文章主要介紹了新版Android Studio3.6找不到R.java怎么處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
詳解如何在Flutter中集成華為認(rèn)證服務(wù)
這篇文章主要介紹了詳解如何在Flutter中集成華為認(rèn)證服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Android下SDL2實(shí)現(xiàn)五子棋游戲
這篇文章主要為大家詳細(xì)介紹了Android下SDL2實(shí)現(xiàn)五子棋游戲的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02

