Android自訂View之LoadingLayout

來源:互聯網
上載者:User

標籤:iss   狀態   bundle   img   margin   span   super   自訂view   ble   

介紹

上一篇博文寫了一個通用的載入view,這篇在載入view的基礎在包裹一層就是LoadingLayout了,主要的目的是免去每次載入時要隱藏主內容布局,然後載入成功之後顯示主內容布局這些繁瑣操作。如果你還不瞭解loadingView,可以簡單的看一下上一篇博文:Android 自訂通用的loadingview,實現原理很簡單,就是LoadingLayout在包裹內容層的基礎上,在代碼裡添加loadingView作為第二個子view,所以不做過多講解,大家看完直接下載源碼參考。

LoadingLayout

This is a view for simplify the operation to loading

一個app載入資料通常是顯示載入狀態,載入成功之後顯示主內容視圖,如果是列表資料的話如ListView,GridView,RecyclerView一般就不用設定主內容視圖隱藏了,
但是如果主視圖有些控制項如TextView會帶效果而不是一片空白的,我們通常需要隱藏主視圖,在請求到資料之後回填資料並顯示主視圖,而這些事情在代碼裡設定總是很麻煩,
該控制項的目的就是為了簡化這些步驟。

特點

1、使用簡單,實現原理也簡單。

2、支援自訂各種視圖,只需要把你要顯示的視圖set進去即可

3、支援設定錯誤視圖點擊事件。

這裡只是提供個思路,大家可以下載源碼去修改成最適合你的view。

使用

1、xml裡聲明view,包裹在內容視圖的外層。

<?xml version="1.0" encoding="utf-8"?><com.qiangyuyang.demo.widget.CommonLoadingLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/loadingLayout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin">    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text="主內容"/></com.qiangyuyang.demo.widget.CommonLoadingLayout>

2、Java代碼裡擷取控制項並在合適的時候調用載入,載入失敗,載入成功等方法。

public class LoadingLayoutActivity extends AppCompatActivity {    protected CommonLoadingLayout mLoadingLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        super.setContentView(R.layout.activity_loading_layout);        mLoadingLayout = (CommonLoadingLayout) findViewById(R.id.loadingLayout);        //設定錯誤視圖點擊重新載入事件        mLoadingLayout.setLoadingHandler(new CommonLoadingView.LoadingHandler() {            @Override            public void doRequestData() {                mLoadingLayout.load();                mLoadingLayout.postDelayed(new Runnable() {                    @Override                    public void run() {                        mLoadingLayout.loadSuccess();                    }                }, 3000);            }        });        //類比載入網路請求後出現錯誤        mLoadingLayout.load();        mLoadingLayout.postDelayed(new Runnable() {            @Override            public void run() {                mLoadingLayout.loadError();            }        }, 3000);    }}

3、自訂載入、載入錯誤、等視圖。

        ProgressBar progressBar = new ProgressBar(this);        this.mLoadingLayout.setLoadingView(progressBar);        TextView textView = new TextView(this);        textView.setText("載入失敗...");        this.mLoadingLayout.setLoadingErrorView(textView);        mLoadingLayout.load();
源碼下載

https://github.com/yissan/LoadingLayout

如果我的文章對你有協助,請動動手指點個贊或關注,您的支援會是我永恒的動力。

Android自訂View之LoadingLayout

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.