发布于 2017-03-19 18:08:26 | 87 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


本文给大家介绍了MJRefresh自定义刷新动画效果,包括常见用法等相关知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧

【一】常见用法

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

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;
*/

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

一共有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自定义刷新动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHPERZ网站的支持!



相关阅读 :
Android开发中MJRefresh自定义刷新动画效果
在Android开发中使用自定义组合控件的例子
android开发教程之自定义属性用法详解
android开发教程之自定义控件checkbox的样式示例
详解Android XML中引用自定义内部类view的四个why
Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题
仿墨迹天气在Android App中实现自定义zip皮肤更换
Android开发中ViewPager实现多页面切换效果
Android开发中实现应用的前后台切换效果
Android开发中实现IOS风格底部选择器(支持时间 日期 自定义)
理解Android中的自定义属性
Android中的Button自定义点击效果实例代码
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务