ListView 下拉更新 (支持 Android)
16lz
2022-06-07
注意:XE7 已提供下拉更的功能。
说明:展示如何在 Android 平台下,使用 ListView 下拉更新。
适用:Delphi XE5 , XE6
修改:需要修改到 Delphi 源码FMX.Platform.Android.pas,请见:[原创] 让 ListView 在 Android 可回弹
视频:http://v.youku.com/v_show/id_XNjU1MzExMDY0.html
源码下载:[原创]ListView下拉更新_XE5.zip
源码下载:[原创]ListView下拉更新_XE6.zip
//------------------------------------------------------------------------------// 2013.12.30 by 龟山阿卍 QQ 1467948783 -// http://www.cnblogs.com/onechen/ -// -// 需修改 -// FMX.Platform.Android.pas -// function TPlatformAndroid.GetScrollingBehaviour: TScrollingBehaviours; -//------------------------------------------------------------------------------unit Main;interfaceuses 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:=0 to 100 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 < -80 then begin RefreshLabel.Text := '放开后可更新'; RefreshImage.Visible := True; if not ShowUp then begin ShowUp := True; FloatAnimation1.StartValue := 360; FloatAnimation1.StopValue := 180; FloatAnimation1.Start; end; end else if ListView1.ScrollViewPos < -40 then begin RefreshLabel.Text := '下拉可更新'; RefreshImage.Visible := True; if not ShowDown then begin ShowDown := True; FloatAnimation1.StartValue := 180; FloatAnimation1.StopValue := 360; 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.
更多相关文章
- Android的线程Handler实现
- android 修改默认APN
- 2.3.1 Android(安卓)Studio使用记录——1.下载安装,相关配置
- Android(安卓)模拟器中AVD路径的修改
- ionic3修改android安装显示的名称
- Android(安卓)SDK三种更新失败及其解决办法
- Android的线程Handler实现
- Android游戏引擎Rokon宣布停止更新
- Linux下Android(安卓)SDK环境搭建--使用命令更新Android(安卓)SD