zoukankan      html  css  js  c++  java
  • 转:u_Toast

    unit u_Toast;

    interface

    uses
    System.SysUtils, System.Types, System.Classes, FMX.Graphics,FMX.Surfaces
    {$IFDEF ANDROID}
    , FMX.Helpers.Android, Androidapi.JNI.app, Androidapi.JNIBridge,
    Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.Widget,
    Androidapi.JNI.GraphicsContentViewText
    {$ENDIF}
    ;

    type
    /// <summary>
    /// Toast显示时间
    /// </summary>
    TToastLength = record
    const
    ShortToast = 0;
    LongToast = 1;
    end;

    /// <summary>
    /// Toast显示位置
    /// </summary>
    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;
    /// <summary>
    /// 显示安卓原生Toast 有图片的
    /// </summary>
    /// <param name="msg">需要显示的内容</param>
    /// <param name="duration">显示时间长短</param>
    /// <param name="gravity">显示的位置</param>
    /// <param name="xOffset,yOffset">坐标设置</param>
    /// <param name="vBitmap">需要显示的图片</param>
    procedure Toast(const msg: string; duration: Integer; gravity: Integer;
    xOffset: Integer; yOffset: Integer; vBitmap: TBitmap); overload;

    implementation

    {$IFDEF ANDROID}
    function BitmapToJBitmap(Bmp: TBitmap): JBitmap;
    var
    mBitmap: JBitmap;
    Surface: TBitmapSurface;
    begin
    Surface := TBitmapSurface.Create;
    Surface.Assign(Bmp);
    mBitmap := TJBitmap.JavaClass.createBitmap(Bmp.Width, Bmp.Height,
    TJBitmap_Config.JavaClass.ARGB_8888);
    if SurfaceToJBitmap(Surface, mBitmap) then
    Result := mBitmap;
    end;
    {$ENDIF}

    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);
    begin
    Toast(msg, duration, gravity, xOffset, yOffset, nil);
    end;

    procedure Toast(const msg: string; duration: Integer; gravity: Integer;
    xOffset: Integer; yOffset: Integer; vBitmap: TBitmap);
    begin
    {$IFDEF ANDROID}
    CallInUiThread(
    procedure
    var
    vToast: JToast;
    vImageView: JImageView;
    vLinearLayout: JLinearLayout;
    begin
    vToast := TJToast.JavaClass.makeText(TAndroidHelper.Activity,
    StrToJCharSequence(msg), duration);
    vToast.setGravity(gravity, xOffset, yOffset);
    if Assigned(vBitmap) then
    begin
    // 创建图片显示
    vImageView := TjImageView.JavaClass.init(TAndroidHelper.Context);
    vImageView.setImageBitmap(BitmapToJBitmap(vBitmap));
    vLinearLayout := TJLinearLayout.Wrap(vToast.getView);
    vLinearLayout.addView(vImageView, 0);
    end;
    vToast.show;
    end);
    {$ENDIF}
    end;

    end.
    ————————————————
    版权声明:本文为CSDN博主「tanqth」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tanqth/java/article/details/104728239

  • 相关阅读:
    TCP/IP协议,,OSI的七层参考模型,HTTP请求响应机制
    火狐浏览器缓存导致JS已经改变的ID没改变
    Server.MapPath 出现未将对象引用设置到对象的实例
    线程池发送邮件的方法(向多个用户发送同一邮件)
    用多线程发送邮箱(一次给一个用户发送N封邮件)
    验证文本框输入内容类型是汉字
    名人博客
    tinyget
    内存分析
    Silverlight Forums
  • 原文地址:https://www.cnblogs.com/timba1322/p/12681493.html
Copyright © 2011-2022 走看看