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

相关文章

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3