直接持って行って使いますアプリごとに使うLoadingLayout

6434 ワード

前言
プロジェクトにはいくつかのページがあります.それぞれロード中、ネットなし、データなし、エラーの四つの状況のために、よく使います.まず効果を見ます.
原理は比較的に簡単で、Frame Layoutを継承して、xmlでレンダリングし終わった後、ロード中、ネットなし、データなし、エラーの四つのページを加えて、必要に応じてどの階を制御しますか?プロジェクトGitHub住所:github.com/weavey/Load…興味のある方はご覧ください.ご指摘ください.
使い方
gradle引用:
comple'comp.lai.weavey:loadinglayout:1.3.1'
使用説明
LoadingLayoutはグローバル構成をサポートしています.すべての使用場所に効果があります.Applicationには以下のように配置する必要があります.
 public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        LoadingLayout.getConfig()
                .setErrorText("   ~     !")
                .setEmptyText("  ,    ")
                .setNoNetworkText("     ,       ···")
                .setErrorImage(R.mipmap.define_error)
                .setEmptyImage(R.mipmap.define_empty)
                .setNoNetworkImage(R.mipmap.define_nonetwork)
                .setAllTipTextColor(R.color.gray)
                .setAllTipTextSize(14)
                .setReloadButtonText("     ")
                .setReloadButtonTextSize(14)
                .setReloadButtonTextColor(R.color.gray)
                .setReloadButtonWidthAndHeight(150,40);
    }
}
「ロード中」のページは、それぞれのAppが異なるかもしれないので、LoadingLayoutはカスタムLoadingPageをサポートしています.以下の通りです.
 LoadingLayout.getConfig()
     .setLoadingPageLayout(R.layout.define_loading_page);
また、個別インターフェースの「特別な需要」に対応するために、LoadingLayoutもまた、局所的に各種の属性を設定することをサポートしており、現在のオブジェクトに対してのみ有効になり、全体に影響を与えません.以下のとおりです
        LoadingLayout  loading = (LoadingLayout) findViewById(R.id.loading_layout);
        loading.setLoadingPage(R.layout.define_loading_page)
                .setEmptyText("      ")
                .setErrorText("")
                .setNoNetworkText("")
                .setErrorImage(R.mipmap.ic_launcher)
                .setErrorTextSize(16)
                .setReloadButtonText("       "); //  
ReloadButtonのためにモニターを設置する:
loadingLayout.setOnReloadListener(new LoadingLayout.OnReloadListener() {
            @Override
            public void onReload(View v) {

            }
        });
表示するページを設定:
 loadingLayout.setStatus(LoadingLayout.Loading);//   
 loadingLayout.setStatus(LoadingLayout.Empty);//   
 loadingLayout.setStatus(LoadingLayout.Error);//  
 loadingLayout.setStatus(LoadingLayout.No_Network);//   
 loadingLayout.setStatus(LoadingLayout.Success);//    
最後に、xmlの中で使用します.
"http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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"
    app:isFirstVisible="true">

    <TextView
        android:background="@color/colorPrimary"
        android:visibility="visible"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="ContentView"/>

com.weavey.loading.lib.LoadingLayout>
注意:(1)isfirstVisible属性はcontent Viewを制御するために使用されます.最初は隠していないと、LoadingLayoutの原理はxmlレンダリングが完了したら、content Viewの上に3層のViewを敷きます.そのため、最初は隠していないと、content Viewのレンダリングが完了したら、呼び出し:loadingLayout.setStatus(LoadingLayout.Loading);は、インタフェースのシンチレーションの効果をもたらします.データのロードが完了したら必ずloadingLayout.setStatus(LoadingLayout.Success);を呼び出して、contentViewを表示します.このようにしてもデータが取得されていない場合、ユーザーに乱雑なレイアウトが見られ、個人はやはりデフォルトの隠しcontentViewが好きです.(2)管理を便利にするために、LoadingLayoutは直属の子Viewしかない.ScrllViewのように、直属の2つの子Viewを追加すると異常を投げられる.(3)ASは直接にカスタムViewの特性をプレビュー画面に反映しますので、LoadingLayoutを使用すると、LoadingLayoutに包まれたレイアウトが見えなくなります(デフォルトはgoneです)ので、isfirstVisible属性をtrueに設定して、プレビューレイアウトもできます.
もっと素晴らしい文章はWeChat公衆番号「Android経験共有」に注目してください.ここではAndroidの達人の経験、国内外のオープンソースプロジェクト、ソース解析、フレームデザイン、Androidの好文の紹介を長く共有します.QQ交流群:Androidの経験を共有するエリア386067289
WeChat公式アカウント