XRefreshView集成以及自定义下拉刷新动画

2024-09-03 18:32

本文主要是介绍XRefreshView集成以及自定义下拉刷新动画,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



XRefreshView集成以及自定义GIF动画

1继承第三方库

   compile 'com.huxq17.xrefreshview:xrefreshview:3.6.9'

    //依赖下面的库不然会报错

   compile 'com.android.support:recyclerview-v7:23.0.1'

2项目xml使用

  <com.andview.refreshview.XRefreshView

       android:id="@+id/xrefreshview_content"

       android:layout_width="match_parent"

       android:layout_height="match_parent">

 

       <ListView

           android:id="@+id/listViewcontent"

           android:layout_width="match_parent"

           android:layout_height="match_parent"></ListView>

   </com.andview.refreshview.XRefreshView>

3配置 xRefreshView文件

       CustomGifHeader header = new CustomGifHeader(this);

       CustomFooterView customFooterView=new CustomFooterView(this);

       xRefreshView.setCustomHeaderView(header);

       xRefreshView.setCustomFooterView(customFooterView);

       //设置是否可以下拉刷新

       xRefreshView.setPullRefreshEnable(true);

       //设置是否可以上拉加载

       xRefreshView.setPullLoadEnable(true);

       xRefreshView.setMoveForHorizontal(true);

       xRefreshView.setAutoLoadMore(false);

       xRefreshView.setPinnedTime(1000);

       xRefreshView.setXRefreshViewListener(newXRefreshView.SimpleXRefreshListener() {

           @Override

           public void onRefresh(boolean isPullDown) {

               new Handler().postDelayed(newRunnable() {

                   @Override

                   public void run() {

                      

//                       pageNum = 1;

//                       aBooleanLoad = false;

//                       Map<String,Object> map = new HashMap<>();

//                       map.put("userId", UseBeanUtils.getData(context).getId());

//                       map.put("page", pageNum + "");

//                       map.put("size", "10");

//                       repairOrderView.repairOrderxRefreshView(map, xRefreshView,

aBooleanLoad);

                     

                       xRefreshView.stopRefresh();

                   }

               }, 2000);

           }

 

           @Override

           public void onLoadMore(boolean isSilence) {

               new Handler().postDelayed(newRunnable() {

 

                   @Override

                   public void run() {

                    

//                       pageNum = pageNum + 1;

//                       aBooleanLoad = true;

//                       Map<String,Object> map = new HashMap<>();

//                       map.put("userId", UseBeanUtils.getData(context).getId());

//                       map.put("page", pageNum + "");

//                       map.put("size", "10");

//                       repairOrderView.repairOrderxRefreshView(map, xRefreshView,

aBooleanLoad);

                     

                       xRefreshView.stopLoadMore();

                   }

               }, 2000);

           }

 

 

3配置 GifViewXml

<?xml version="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="match_parent"

   android:layout_height="80dp"

   android:gravity="center"

   android:orientation="vertical">

 

   <com.operations.winsky.testxrfresugif.GifView

       android:id="@+id/gif1"

       android:layout_width="15dp"

       android:layout_height="33dp"

       android:layout_marginTop="10dp"

       android:enabled="false" />

 

   <com.operations.winsky.testxrfresugif.GifView

       android:id="@+id/gif2"

       android:layout_width="24dp"

       android:layout_height="10dp"

       android:layout_marginTop="10dp"

       android:enabled="false" />

 

   <TextView

       android:id="@+id/gif_header_hint"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="@string/xrefreshview_header_hint_normal"

       android:textColor="#222222" />

 

</LinearLayout>

 

 

4自定义头部动画

 

packagecom.operations.winsky.testxrfresugif;

 

import android.content.Context;

import android.graphics.Color;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.LinearLayout;

import android.widget.TextView;

 

importcom.andview.refreshview.callback.IHeaderCallBack;

 

 

public class CustomGifHeader extendsLinearLayout implements IHeaderCallBack {

   private GifView gifView1;

   private GifView gifView2;

   privateTextView mHintTextView;

 

   public CustomGifHeader(Context context) {

       super(context);

       setBackgroundColor(Color.parseColor("#f3f3f3"));

       initView(context);

   }

 

   /**

    * @param context

    * @param attrs

    */

   publicCustomGifHeader(Context context, AttributeSet attrs) {

       super(context, attrs);

       initView(context);

   }

 

   private void initView(Context context) {

       LayoutInflater.from(context).inflate(R.layout.gif_header, this);

       gifView1 = (GifView) findViewById(R.id.gif1);

       mHintTextView = (TextView) findViewById(R.id.gif_header_hint);

       gifView2 = (GifView) findViewById(R.id.gif2);

       gifView1.setMovieResource(R.raw.vertical);

       gifView2.setMovieResource(R.raw.horizontal);

       gifView2.setVisibility(View.GONE);

   }

 

   public void setRefreshTime(long lastRefreshTime) {

   }

 

   public void hide() {

       setVisibility(View.GONE);

   }

 

   public void show() {

       setVisibility(View.VISIBLE);

   }

 

   @Override

   public void onStateNormal() {

       mHintTextView.setText(R.string.xrefreshview_header_hint_normal);

       gifView1.setVisibility(View.VISIBLE);

       gifView2.setVisibility(View.GONE);

       gifView1.setPaused(false);

       gifView2.setPaused(true);

   }

 

   @Override

   public void onStateReady() {

       mHintTextView.setText(R.string.xrefreshview_header_hint_ready);

   }

 

   @Override

   public void onStateRefreshing() {

       mHintTextView.setText(R.string.xrefreshview_header_hint_refreshing);

       gifView1.setVisibility(View.GONE);

       gifView2.setVisibility(View.VISIBLE);

       gifView1.setPaused(true);

       gifView2.setPaused(false);

   }

 

   @Override

   public void onStateFinish(boolean success) {

       mHintTextView.setText(success ? R.string.xrefreshview_header_hint_loaded: R.string.xrefreshview_header_hint_loaded_fail);

//       gifView1.setVisibility(View.VISIBLE);

       gifView2.setVisibility(View.GONE);

       gifView2.setPaused(true);

   }

 

   @Override

   public void onHeaderMove(double headerMovePercent, int offsetY, intdeltaY) {

       //

   }

 

   @Override

   public int getHeaderHeight() {

       return getMeasuredHeight();

   }

}

5自定义头部动画style.xml

<style name="Widget_GifView"parent="AppBaseTheme">

       <!-- All customizations that are NOT specific to a particularAPI-level can go here. -->

   </style>

   <style name="AppBaseTheme"parent="android:Theme.Holo.Light">

       <!--

           Theme customizations available in newer API levels can go in

           res/values-vXX/styles.xml, while customizations related to

           backward-compatibility can go here.

       -->

   </style>

5自定义头部动画 attrs.xml

 <declare-styleablename="GifView">

       <attr name="gif" format="reference" />

       <attr name="paused" format="boolean" />

   </declare-styleable>

 

   <declare-styleable name="CustomTheme">

       <attr name="gifViewStyle" format="reference"/>

   </declare-styleable>

       });

七别忘了加gif文件


这篇关于XRefreshView集成以及自定义下拉刷新动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133712

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal