ListView 下拉更新 (支持 Android)
注意:XE7 已提供下拉更的功能。
说明:展示如何在 Android 平台下,使用 ListView 下拉更新。
适用:Delphi XE5 , XE6
修改:需要修改到 Delphi 源码 FMX.Platform.Android.pas,请见:[原创] 让 ListView 在 Android 可回弹
视频:http://v.youku.com/v_show/id_XNjU1MzExMDY0.html
//------------------------------------------------------------------------------
// 2013.12. by 龟山阿卍 QQ -
// http://www.cnblogs.com/onechen/ -
// -
// 需修改 -
// FMX.Platform.Android.pas -
// function TPlatformAndroid.GetScrollingBehaviour: TScrollingBehaviours; -
//------------------------------------------------------------------------------ unit Main; interface uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.ListView.Types, FMX.Objects, FMX.ListView, FMX.Ani; type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ListView1: TListView;
PullPaintBox: TPaintBox;
AniIndicator1: TAniIndicator;
RefreshTimer: TTimer;
RefreshLabel: TLabel;
RefreshImage: TImage;
FloatAnimation1: TFloatAnimation;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
procedure ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure RefreshTimerTimer(Sender: TObject);
private
ShowUp, ShowDown: Boolean;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
Item1: TListViewItem;
begin
for i:= to do
begin
Item1 := ListView1.Items.Add;
Item1.Text := i.ToString;
end;
ShowUp := False;
ShowDown := False;
end; procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin
if not AniIndicator1.Visible then
begin
RefreshLabel.Visible := True;
if ListView1.ScrollViewPos < - then
begin
RefreshLabel.Text := '放开后可更新'; RefreshImage.Visible := True;
if not ShowUp then
begin
ShowUp := True;
FloatAnimation1.StartValue := ;
FloatAnimation1.StopValue := ;
FloatAnimation1.Start;
end;
end
else
if ListView1.ScrollViewPos < - then
begin
RefreshLabel.Text := '下拉可更新'; RefreshImage.Visible := True;
if not ShowDown then
begin
ShowDown := True;
FloatAnimation1.StartValue := ;
FloatAnimation1.StopValue := ;
FloatAnimation1.Start;
end;
end
else
begin
RefreshLabel.Text := '';
RefreshImage.Visible := False;
end;
end;
end; procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
if RefreshLabel.Visible then
begin
RefreshLabel.Visible := False; // 开始更新
AniIndicator1.Visible := True;
AniIndicator1.Enabled := True; RefreshTimer.Enabled := True;
end;
end; procedure TForm1.RefreshTimerTimer(Sender: TObject);
begin
// 结束更新
RefreshTimer.Enabled := False; AniIndicator1.Enabled := False;
AniIndicator1.Visible := False; ShowUp := False;
ShowDown := False;
end; end.
ListView 下拉更新 (支持 Android)的更多相关文章
- 使用PullToRefresh插件实现ListView下拉刷新(Android Studio)
下载PullToRefresh
- Android—自定义控件实现ListView下拉刷新
这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的 ...
- Android学习之——ListView下拉刷新
背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示. 微博 搜狐新闻 ...
- Android ListView下拉刷新时卡的问题解决小技巧
问题:ListView下拉刷新时看上去非常的卡 解决方案: 在BaseAdapter的getView方法中,有三个参数 public View getView(int position, View c ...
- ListView下拉刷新,上拉自动加载更多
下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的Android客户端源码.先看示例图. ...
- ListView下拉刷新、上拉载入更多之封装改进
在Android中ListView下拉刷新.上拉载入更多示例一文中,Maxwin兄给出的控件比较强大,前面有详细介绍,但是有个不足就是,里面使用了一些资源文件,包括图片,String,layout,这 ...
- ListView下拉刷新上拉加载更多实现
这篇文章将带大家了解listview下拉刷新和上拉加载更多的实现过程,先看效果(注:图片中listview中的阴影可以加上属性android:fadingEdge="none"去掉 ...
- listview下拉刷新上拉加载扩展(二)-仿美团外卖
经过前几篇的listview下拉刷新上拉加载讲解,相信你对其实现机制有了一个深刻的认识了吧,那么这篇文章我们来实现一个高级的listview下拉刷新上拉加载-仿新版美团外卖的袋鼠动画: 项目结构: 是 ...
- listview下拉刷新上拉加载扩展(一)
前两篇实现了listview简单的下拉刷新和上拉加载,功能已经达到,单体验效果稍简陋,那么在这篇文章里我们来加一点效果,已达到我们常见的listview下拉刷新时的效果: 首先,在headview的x ...
随机推荐
- 阿里云主机(aliyun-Linux) x64安装Redis详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/97.html?1455870336 如何在Linux上安装Redis呢, ...
- Redis和Memcached的区别详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...
- 360路由器刷openwrt、不死uboot、双系统 、wifi中继
该类教程网上有很多,但是很多不全,给小白用户造成了很多困扰.我也是按照网上的教程刷了半天,才熟悉了是怎么个回事.这里整理成教程. 注意: 请看教程步骤走,不要跳跃性刷机.不懂的术语.软件,若本文无介绍 ...
- php-fpm进程数优化
php-fpm未优化网友反映的问题 1.最近将Wordpress迁移至阿里云.由于自己的服务器是云服务器,硬盘和内存都比较小,所以内存经常不够使,通过ps ax命令查看后,发现启动php-fpm进程数 ...
- 投资人谈VR色变,VR好戏却刚刚开始
去年下半年,资本圈谈O2O色变,以至于创业者们都不敢说自己做O2O:到了今年下半年,资本圈却成为了谈VR色变--在中国的互联网科技创业中,资本市场已经成为了创业的一种风向标.资本走向哪里,创业者就走向 ...
- css图片叠加和底部定位
css图片叠加和底部定位 css图片叠加 两张图片需要叠在一起显示,如何定位 容器先对定位 第一张图片正常摆放 第二张图片绝对定位,top:0px 这样便实现了两张图片叠加在一起了,设置z-index ...
- KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定
本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ...
- 12.创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。
package java1; public class Point { int x; int y; Point(int x,int y) { this.x = x; this.y = y; } pub ...
- jeasyUI的treegrid批量删除多行(转载)
看上去,JavaScript的变量类型,也可以分为值类型和引用类型.赋值操作中,值类型,各自独立,互不干涉:引用类型,指针而已,大家指向同一个对象. 为什么这样说呢? 我是从jeasyUI的treeg ...
- Web Workers 的基本信息
问题:JavaScript 并行性 要将有趣的应用(例如从侧重服务器端的实施)移植到客户端 JavaScript,存在很多制约瓶颈.其中包括浏览器兼容性.静态类型.可访问性和性能.幸运的是,随着浏览器 ...