程序员

超简单!原生SwipeRefreshLayout实现首页下拉刷新

简介

SwipeRefreshLayout是Google官方推出的一款下拉刷新组件,位于v4兼容包下

android.support.v4.widget.SwipeRefreshLayout

这里简单介绍一下它的超简单的用法,因为我比较懒,所以直接上代码了!

布局

布局构造介绍

大概讲一下这个布局构造,直接从项目里贴过来的,主页用DragLayout布局的,由一个主页和一个侧边栏组成

xml







    
    
    


    
    

    






实现逻辑

  • 首先实现监听方法,并且设置监听

      implements SwipeRefreshLayout.OnRefreshListener
    
      /**
       * Pull To ReFresh
       */
      @BindView(R.id.main_refresh)
      SwipeRefreshLayout mainRefresh;
    
      private boolean isRefresh = false;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          ButterKnife.bind(this);
    
          EventBus.getDefault().register(this);
          //set refresh listener
          mainRefresh.setOnRefreshListener(this);
    
          isLogin();
      }
  • 然后进行写你自己的业务逻辑

  • 重写onRefresh()方法:

      /**
       * Main Pull To Refresh
       */
      @Override
      public void onRefresh() {
          //判断刷新状态
          if (!isRefresh) {
              isRefresh = true;
              //send request
              getInfo(username, token, ip);
    
          }
      }
  • 在请求完成之后,发送一条请求到主线程:

    //send msg to main 
    EventBus.getDefault().post("complete");
  • 主线程处理

    这里用的EventBus,可以当Handler用,主线程收到信息之后对状态进度条状态做处理,OK,完成了!

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void MainHandler(String msg) {
        if(msg.equals("complete")){
            //完成请求后隐藏刷新进度条
            mainRefresh.setRefreshing(false);
            isRefresh = false;
        }
    }

后记

以上列出的只是SwipeRefreshLayout的一般用法,如果需要自定义的话就相对复杂一点了,可以参考Android官方说明:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html,真的特别详细!