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全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

springBoot (springCloud2025)集成redisCluster 集群的操作方法

《springBoot(springCloud2025)集成redisCluster集群的操作方法》文章介绍了如何使用SpringBoot集成RedisCluster集群,并详细说明了pom.xm... 目录pom.XMLapplication.yamlcluster配置类其他配置类连接池配置类Redis

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文