博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)
阅读量:5914 次
发布时间:2019-06-19

本文共 3653 字,大约阅读时间需要 12 分钟。

PullToRefreshScrollView 自定义下拉刷新动画,只需改一处。

 

以下部分转载自

 

一,定义刷新动画的layout

在library下的com.handmark.pulltorefresh.library.internal包中的FlipLoadingLayout和RotateLoadingLayout

FlipLoadingLayout为ios风格的箭头颠倒的刷新动画

RotateLoadingLayout为android风格的图片旋转动画

共同的设置方法是

1,getDefaultDrawableResId()

动画默认图片,可以替换为自己的图片

2,refreshingImpl()

正在刷新时的回调方法,可以设置开始动画

3,resetImpl()

重置

二,正在刷新时为图片居中旋转的效果

1,首先修改library中的pull_to_refresh_header_vertical.xml,去除文字的layout,图片layout水平居中

2,去除LoadingLayout中的关于textview的代码

3,可以在RotateLoadingLayout中的getDefaultDrawableResId()方法替换成自己的图片

三,设置自定义动画效果

1,首先设置一个简单的小人走的动画效果,在anim文件夹下新建一个xml,需要加载两张图片,控制图片的停留时间

2,新建刷新动画的layout,TweenAnimLoadingLayout,类似于之前的源码中的FlipLoadingLayout和RotateLoadingLayout

主要设置初始化,和那几个关键方法就行

package com.handmark.pulltorefresh.library.internal;      import com.handmark.pulltorefresh.library.R;  import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;  import com.handmark.pulltorefresh.library.PullToRefreshBase.Orientation;    import android.content.Context;  import android.content.res.TypedArray;  import android.graphics.drawable.AnimationDrawable;  import android.graphics.drawable.Drawable;  import android.view.View;    /**  * @date 2015/1/8  * @author wuwenjie  * @desc 帧动画加载布局  */  public class TweenAnimLoadingLayout extends LoadingLayout {        private AnimationDrawable animationDrawable;        public TweenAnimLoadingLayout(Context context, Mode mode,              Orientation scrollDirection, TypedArray attrs) {          super(context, mode, scrollDirection, attrs);          // 初始化          mHeaderImage.setImageResource(R.anim.loading);          animationDrawable = (AnimationDrawable) mHeaderImage.getDrawable();      }      // 默认图片      @Override      protected int getDefaultDrawableResId() {          return R.drawable.app_loading0;      }            @Override      protected void onLoadingDrawableSet(Drawable imageDrawable) {          // NO-OP      }            @Override      protected void onPullImpl(float scaleOfLayout) {          // NO-OP      }      // 下拉以刷新      @Override      protected void pullToRefreshImpl() {          // NO-OP      }      // 正在刷新时回调      @Override      protected void refreshingImpl() {          // 播放帧动画          animationDrawable.start();      }      // 释放以刷新      @Override      protected void releaseToRefreshImpl() {          // NO-OP      }      // 重新设置      @Override      protected void resetImpl() {          mHeaderImage.setVisibility(View.VISIBLE);          mHeaderImage.clearAnimation();      }    }

3,替换之前的刷新layout为TweenAnimLoadingLayout

 找到library项目com.handmark.pulltorefresh.library包下的PullToRefreshListView,发现头脚的layout用的都是LoadingLayout,找到头脚layout的创建方法createLoadingLayout进入,在createLoadingLayout方法中再进入createLoadingLayout,找到最原始的新建动画layout的地方,把默认的RotateLoadingLayout改成TweenAnimLoadingLayout就行了

在PullToRefreshBase类下,变为

//在最原始的地方把新建动画layout换成TweenAnimLoadingLayout          LoadingLayout createLoadingLayout(Context context, Mode mode, Orientation scrollDirection, TypedArray attrs) {              switch (this) {                  case ROTATE:                  default:  //                  return new RotateLoadingLayout(context, mode, scrollDirection, attrs);                      return new TweenAnimLoadingLayout(context, mode, scrollDirection, attrs);                  case FLIP:                      return new FlipLoadingLayout(context, mode, scrollDirection, attrs);              }          }

4,去除LoadingLayout中的关于textview的代码

代码下载 http://download.csdn.net/detail/superjunjin/8589827

你可能感兴趣的文章
#翻译NO.6# --- Spring Integration Framework
查看>>
hadoop 多租户管理
查看>>
spring3+hibernate4 sessionFactory 注入(最新修改)
查看>>
一个Title list 锚点程序
查看>>
文本操作之sed
查看>>
双系统下如何卸载windows2008R2(转贴)
查看>>
phpMyAdmin 的“错误令牌不符”问题!
查看>>
iphone开发会给我们的生活带来不一样的改变
查看>>
数据库空值和NULL处理
查看>>
有关NGUI HUD Text 的使用
查看>>
Python tcp socket 传送文件
查看>>
从美丽的角度看待工作
查看>>
我的友情链接
查看>>
java培训
查看>>
SylixOS 网络零拷贝技术
查看>>
c# 变量、属性 小结,@字符用处
查看>>
深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)
查看>>
php5.4.13源码安装编译
查看>>
七牛上传文件异常
查看>>
监控varnish的缓存命中率
查看>>