Delphi D10.X安卓APP开发中简单使用原生Toast


本文整理自网络,侵删。

 
在安卓开发中,有时候我们希望使用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结构体指针的使用

Delphi写的验证身份证号有效性函数

Delphi 中相对路径与绝对路径函数

Delphi 简单的旋转图像角度代码

Delphi 安卓app的http访问权限

Delphi 编写系统服务

Delphi 用dll实现插件的简单演示

Delphi 用wininet 单元实现 post提交数据

Delphi数值转ip

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...