本文整理自网络,侵删。
在安卓开发中,有时候我们希望使用Toast,Delphi已经为我们提供了使用接口,但仍然不是很方便,通过一些简单的封装,就可以方便的使用原生Toast。
直接上代码
封装代码
unit u_Toast;
interface
uses System.SysUtils, System.Types, System.Classes{$IFDEF ANDROID} , FMX.Helpers.Android, Androidapi.JNI.app, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.Widget{$ENDIF} ;
type
TToastLength = record const ShortToast = 0; LongToast = 1; end;
TGravity = record const AXIS_CLIP = 8; AXIS_PULL_AFTER = 4; AXIS_PULL_BEFORE = 2; AXIS_SPECIFIED = 1; AXIS_X_SHIFT = 0; AXIS_Y_SHIFT = 4; BOTTOM = 80; CENTER = 17; CENTER_HORIZONTAL = 1; CENTER_VERTICAL = 16; CLIP_HORIZONTAL = 8; CLIP_VERTICAL = 128; DISPLAY_CLIP_HORIZONTAL = 16777216; DISPLAY_CLIP_VERTICAL = 268435456; &END = 8388613; FILL = 119; FILL_HORIZONTAL = 7; FILL_VERTICAL = 112; HORIZONTAL_GRAVITY_MASK = 7; LEFT = 3; NO_GRAVITY = 0; RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; RELATIVE_LAYOUT_DIRECTION = 8388608; RIGHT = 5; START = 8388611; TOP = 48; VERTICAL_GRAVITY_MASK = 112; end;
/// <summary>/// 显示安卓原生Toast/// </summary>/// <param name="msg">需要显示的内容</param>/// <param name="duration">显示时间长短</param>procedure Toast(const msg: string; duration: Integer = TToastLength.ShortToast); overload;
/// <summary>/// 显示安卓原生Toast/// </summary>/// <param name="msg">需要显示的内容</param>/// <param name="duration">显示时间长短</param>/// <param name="gravity">显示的位置</param>/// <param name="xOffset,yOffset">坐标设置</param>procedure Toast(const msg: string; duration: Integer; gravity: Integer; xOffset: Integer; yOffset: Integer); overload;
implementation
procedure Toast(const msg: string; duration: Integer = TToastLength.ShortToast);begin{$IFDEF ANDROID} CallInUiThread( procedure begin TJToast.JavaClass.makeText(TAndroidHelper.Activity, StrToJCharSequence(msg), duration).show; end);{$ENDIF}end;
procedure Toast(const msg: string; duration: Integer; gravity: Integer;xOffset: Integer; yOffset: Integer);{$IFDEF ANDROID}var vToast: JToast;{$ENDIF}begin{$IFDEF ANDROID} CallInUiThread( procedure begin vToast := TJToast.JavaClass.makeText(TAndroidHelper.Activity, StrToJCharSequence(msg), duration); vToast.setGravity(gravity, xOffset, yOffset); vToast.show; end);{$ENDIF}end;
end.
使用
封装了两个过程。具体使用方法如下:
procedure TForm5.Button1Click(Sender: TObject);begin Toast('这是一个默认的Toast.');end;
procedure TForm5.Button2Click(Sender: TObject);begin Toast('居中后向下向右偏离50,显示Toast.',TToastLength.ShortToast,TGravity.CENTER,50,50); Toast('居中的Toast.',TToastLength.LongToast,TGravity.CENTER,0,0);end;
第二个方法是可以自定义Toast显示位置的。
引用文件
只需要在你的项目中引用这个Pas文件就可以使用,当然需要配置好搜索路径(也可以直接将文件加到项目中)
uses u_Toast;
后话
安卓原生Toast使用中还可以显示图片、标题等信息,那些是高级使用方式,今天就暂时不介绍了。今天的内容已上传到下载里,《Delphi开发安卓APP中使用原生Toast》,主要代码在文章中都有,也可以直接复制使用。
――――――――――――――――
原文链接:https://blog.csdn.net/tanqth/article/details/104696511
相关阅读 >>
Delphi读取webbrowse中的图片显示在image中
更多相关阅读请进入《Delphi》频道 >>