欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发中MJRefresh自定义刷新动画效果

程序员文章站 2024-03-01 19:12:16
【一】常见用法 最原始的用法,耦合度低,但是不能统一管理。我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位、修改。 1...

【一】常见用法

最原始的用法,耦合度低,但是不能统一管理。我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位、修改。

1.1 使用默认刷新(耦合度底,但是想统一修改起来特别麻烦)

self.tableview.mj_header = [mjrefreshnormalheader headerwithrefreshingblock:^{
//在这里执行刷新操作
}];
self.tableview.mj_header = [mjrefreshnormalheader headerwithrefreshingtarget:self refreshingaction:@selector(刷新方法)];

1.2 自定义刷新(耦合度底,但是想统一修改起来特别麻烦)

//1.2.1新建一个自定义刷新
mjrefreshnormalheader *customref =[mjrefreshnormalheader headerwithrefreshingblock:^{
//1.2.2在这里执行刷新操作
}];
//1.2.3 自定义刷新状态文字
[customref settitle:@"普通闲置状态" forstate:mjrefreshstateidle];
[customref settitle:@"松开就可以进行刷新的状态" forstate:mjrefreshstatepulling];
[customref settitle:@"正在刷新中的状态" forstate:mjrefreshstaterefreshing];
[customref settitle:@"即将刷新的状态" forstate:mjrefreshstatewillrefresh];
[customref settitle:@"所有数据加载完毕,没有更多的数据了" forstate:mjrefreshstatenomoredata];
//1.2.4添加下拉刷新
self.tableview.mj_header = customref;
//一些其他属性设置
/*
// 设置字体
customref.statelabel.font = [uifont systemfontofsize:15];
customref.lastupdatedtimelabel.font = [uifont systemfontofsize:14];
// 设置颜色
customref.statelabel.textcolor = [uicolor redcolor];
customref.lastupdatedtimelabel.textcolor = [uicolor bluecolor];
// 隐藏时间
customref.lastupdatedtimelabel.hidden = yes;
// 隐藏状态
customref.statelabel.hidden = yes;
// 设置自动切换透明度(在导航栏下面自动隐藏)
customref.automaticallychangealpha = yes;
*/

【二】正确用法(统一管理项目所有下拉刷新控件)

Android开发中MJRefresh自定义刷新动画效果

一共有6种刷新对象(图片末尾带红色的都是)。

假如我们想实现默认的下拉刷新,

【2.1】只要新建一个对象,

继承自mjrefreshnormalheader,

#import "mjrefreshnormalheader.h"
@interface hsnormalheader : mjrefreshnormalheader
@end

【2.2】然后重写方法- (void)prepare,重写后记得实现[super prepare],

#import "hsnormalheader.h"
@implementation hsnormalheader
#pragma mark - 重写父类的方法
- (void)prepare{
[super prepare];
//所有的自定义东西都放在这里
[self settitle:@"普通闲置状态" forstate:mjrefreshstateidle];
[self settitle:@"松开就可以进行刷新的状态" forstate:mjrefreshstatepulling];
[self settitle:@"正在刷新中的状态" forstate:mjrefreshstaterefreshing];
[self settitle:@"即将刷新的状态" forstate:mjrefreshstatewillrefresh];
[self settitle:@"所有数据加载完毕,没有更多的数据了" forstate:mjrefreshstatenomoredata];
//一些其他属性设置
/*
// 设置字体
self.statelabel.font = [uifont systemfontofsize:15];
self.lastupdatedtimelabel.font = [uifont systemfontofsize:14];
// 设置颜色
self.statelabel.textcolor = [uicolor redcolor];
self.lastupdatedtimelabel.textcolor = [uicolor bluecolor];
// 隐藏时间
self.lastupdatedtimelabel.hidden = yes;
// 隐藏状态
self.statelabel.hidden = yes;
// 设置自动切换透明度(在导航栏下面自动隐藏)
self.automaticallychangealpha = yes;
*/
}
//如果需要自己重新布局子控件
- (void)placesubviews{
[super placesubviews];
//如果需要自己重新布局子控件,请在这里设置
//箭头
// self.arrowview.center =
}
@end

然后我们再对应的控制器实现刷新只要这样既可:

【2.3】引入自定义对象,比如叫hsnormalheader(继承自mjrefreshnormalheader),

#import "hsnormalheader.h"

【2.4】在需要下拉刷新的控制器这样实现既可

self.tableview.mj_header = [hsnormalheader headerwithrefreshingblock:^{
//刷新请求
}];

同理,对应的下拉动画只需新建对象继承自mjrefreshgifheader

#pragma mark - 重写父类的方法
- (void)prepare{
[super prepare];
// 设置普通状态的动画图片
nsmutablearray *idleimages = [nsmutablearray array];
for (nsuinteger i = 1; i<=60; i++) {
uiimage *image = [uiimage imagenamed:[nsstring stringwithformat:@"dropdown_anim__000%zd", i]];
[idleimages addobject:image];
}
[self setimages:idleimages forstate:mjrefreshstateidle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
nsmutablearray *refreshingimages = [nsmutablearray array];
for (nsuinteger i = 1; i<=3; i++) {
uiimage *image = [uiimage imagenamed:[nsstring stringwithformat:@"dropdown_loading_0%zd", i]];
[refreshingimages addobject:image];
}
[self setimages:refreshingimages forstate:mjrefreshstatepulling];
// 设置正在刷新状态的动画图片
[self setimages:refreshingimages forstate:mjrefreshstaterefreshing];
//隐藏时间
self.lastupdatedtimelabel.hidden = yes;
//隐藏状态
self.statelabel.hidden = yes;
}

至此,可以说mjrefresh的常用主要功能都已经被你掌握完毕,如需掌握更多请去参考mj的地址

https://github.com/codermjlee/mjrefresh

本案例的demo地址为https://github.com/wolfhous/hsupdateapp

注:里面还包含一个的自动检测更新,大家觉得好用请加星哦!

Android开发中MJRefresh自定义刷新动画效果

以上所述是小编给大家介绍的android开发中mjrefresh自定义刷新动画效果,希望对大家有所帮助