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

相关文章

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容