Giter VIP home page Giter VIP logo

langziguilai / ycstatelayout Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yangchong211/ycstatelayout

0.0 2.0 0.0 276 KB

状态切换,让View状态的切换和Activity彻底分离开。用builder模式来自由的添加需要的状态View,可以设置有数据,数据为空,加载数据错误,网络错误,加载中等多种状态,并且支持自定义状态的布局。。目前已经用于新芽,投资界等正式项目中,拓展性强!!

License: Apache License 2.0

Java 100.00%

ycstatelayout's Introduction

YCStateLayout状态切换

1.关于Android界面切换状态的介绍

* 怎样切换界面状态?有些界面想定制自定义状态?状态如何添加点击事件?下面就为解决这些问题!
* 内容界面
* 加载数据中
* 加载数据错误
* 加载后没有数据
* 没有网络

2.思路转变,抽取分离类管理几种状态

* 以前做法:
	* 直接把这些界面include到main界面中,然后动态去切换界面,后来发现这样处理不容易复用到其他项目中,而且在activity中处理这些状态的显示和隐藏比较乱
	* 利用子类继承父类特性,在父类中写切换状态,但有些界面如果没有继承父类,又该如何处理
* 现在做法:
	* 让View状态的切换和Activity彻底分离开,必须把这些状态View都封装到一个管理类中,然后暴露出几个方法来实现View之间的切换。
	* 在不同的项目中可以需要的View也不一样,所以考虑把管理类设计成builder模式来自由的添加需要的状态View

3.关于该状态切换工具优点分析

* 可以自由切换内容,空数据,异常错误,加载,网络错误等5种状态
* 父类BaseActivity直接暴露5中状态,方便子类统一管理状态切换
* 倘若有些页面想定制状态布局,也可以自由实现,很简单

4.使用方法

* **代码引用:compile 'cn.yc:YCStateLib:1.1.5'**
* 如下所示,具体可以直接参考代码
statusLayoutManager = StateLayoutManager.newBuilder(this)
            .contentView(R.layout.activity_content)
            .emptyDataView(R.layout.activity_emptydata)
            .errorView(R.layout.activity_error)
            .loadingView(R.layout.activity_loading)
            .netWorkErrorView(R.layout.activity_networkerror)
            .build();


/**
 * 点击重新刷新数据
 */
private void initEmptyDataView() {
    statusLayoutManager.showEmptyData();
    LinearLayout ll_empty_data = (LinearLayout) findViewById(R.id.ll_empty_data);
    ll_empty_data.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            initData();
            adapter.notifyDataSetChanged();
            showContent();
        }
    });
}

/**
 * 点击重新刷新
 */
private void initErrorDataView() {
    statusLayoutManager.showError();
    LinearLayout ll_error_data = (LinearLayout) findViewById(R.id.ll_error_data);
    ll_error_data.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            initData();
            adapter.notifyDataSetChanged();
            showContent();
        }
    });
}

/**
 * 点击设置网络
 */
private void initSettingNetwork() {
    statusLayoutManager.showNetWorkError();
    LinearLayout ll_set_network = (LinearLayout) findViewById(R.id.ll_set_network);
    ll_set_network.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent("android.settings.WIRELESS_SETTINGS");
            startActivity(intent);
        }
    });
}

5.实现效果

6.版本更新说明

  • v1.0 更新于2017年3月28日
  • v1.1 更新于2017年12月3日
  • v1.1.5 更新于2018年4月25日

ycstatelayout's People

Contributors

yangchong211 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.