请选择 进入手机版 | 继续访问电脑版

大富翁Delphi开发技术网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3956|回复: 3

Delphi XE8+小米2 Android实例-消息框

  [复制链接]

69

主题

96

帖子

782

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
782
发表于 2015-8-4 14:18:48 | 显示全部楼层 |阅读模式
精品文章
支持版本: Delphi XE8 
资源分类: 系统 窗体 
发布平台: Android 
转载地址: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
o_Android消息框.jpg

方法一支持。
方法二与方法三都是三方单元,功能相同。
方法4与方法5报错,提示平台不支持。
第三方单元一:

  1. unit Android.JNI.Toast;

  2. // Java bridge class imported by hand by Brian Long (http://blong.com)
  3. interface

  4. {$IFDEF ANDROID}

  5. uses
  6. Androidapi.Helpers,
  7. Androidapi.JNIBridge,
  8. Androidapi.JNI.JavaTypes,
  9. Androidapi.JNI.GraphicsContentViewText;
  10. {$ENDIF}
  11. {$IFDEF ANDROID}

  12. type
  13. TToastLength = (LongToast, ShortToast);

  14. JToast = interface;

  15. JToastClass = interface(JObjectClass)
  16. ['{69E2D233-B9D3-4F3E-B882-474C8E1D50E9}']
  17. { Property methods }
  18. function _GetLENGTH_LONG: Integer; cdecl;
  19. function _GetLENGTH_SHORT: Integer; cdecl;
  20. { Methods }
  21. function init(context: JContext): JToast; cdecl; overload;
  22. function makeText(context: JContext; text: JCharSequence; duration: Integer)
  23. : JToast; cdecl;
  24. { Properties }
  25. property LENGTH_LONG: Integer read _GetLENGTH_LONG;
  26. property LENGTH_SHORT: Integer read _GetLENGTH_SHORT;
  27. end;

  28. [JavaSignature('android/widget/Toast')]
  29. JToast = interface(JObject)
  30. ['{FD81CC32-BFBC-4838-8893-9DD01DE47B00}']
  31. { Methods }
  32. procedure cancel; cdecl;
  33. function getDuration: Integer; cdecl;
  34. function getGravity: Integer; cdecl;
  35. function getHorizontalMargin: Single; cdecl;
  36. function getVerticalMargin: Single; cdecl;
  37. function getView: JView; cdecl;
  38. function getXOffset: Integer; cdecl;
  39. function getYOffset: Integer; cdecl;
  40. procedure setDuration(value: Integer); cdecl;
  41. procedure setGravity(gravity, xOffset, yOffset: Integer); cdecl;
  42. procedure setMargin(horizontalMargin, verticalMargin: Single); cdecl;
  43. procedure setText(s: JCharSequence); cdecl;
  44. procedure setView(view: JView); cdecl;
  45. procedure show; cdecl;
  46. end;

  47. TJToast = class(TJavaGenericImport<JToastClass, JToast>)
  48. end;

  49. procedure Toast(const Msg: string; duration: TToastLength = ShortToast);

  50. {$ENDIF}

  51. implementation

  52. {$IFDEF ANDROID}

  53. uses
  54. FMX.Helpers.Android;

  55. procedure Toast(const Msg: string; duration: TToastLength);
  56. var
  57. ToastLength: Integer;
  58. begin
  59. if duration = ShortToast then
  60. ToastLength := TJToast.JavaClass.LENGTH_SHORT
  61. else
  62. ToastLength := TJToast.JavaClass.LENGTH_LONG;
  63. CallInUiThread(
  64. procedure
  65. begin
  66. TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(Msg),
  67. ToastLength).show
  68. end);
  69. end;
  70. {$ENDIF}

  71. end.
复制代码

第三方单元二:
  1. {***************************************************************************}
  2. {                                                                           }
  3. {       功能:Android Toast提示消息框                                         }
  4. {       名称:Androidapi.JNI.Widget.Toast.pas                               }
  5. {       版本:1.0                                                           }
  6. {       环境:Win7 Sp1 64bit                                                }
  7. {       工具:Delphi XE7                                                    }
  8. {       日期:2014-11-23 19:45:35                                           }
  9. {       用法:TToast.Show(MessageText, isLongHint)                          }
  10. {--------------------------------------------------------------------------}
  11. {       原版作者:ying32                                                     }
  12. {       QQ:396506155                                                       }
  13. {       MSN :ying_32@live.cn                                               }
  14. {       E-mail:yuanfen3287@vip.qq.com                                      }
  15. {       Website:http://blog.csdn.net/zyjying520/article/details/26158941   }
  16. {       版权所有 (C) 2013-2013 ying32.tk All Rights Reserved                 }
  17. {---------------------------------------------------------------------------}
  18. {       修改者:tht2009                                                      }
  19. {       改动:1、去掉注释掉的方法                                               }
  20. {            2、移动FMX.Helpers.Android引用声明到实现区                         }
  21. {            3、增加Androidapi.Helpers引用                                    }
  22. {                                                                           }
  23. {***************************************************************************}

  24. unit Androidapi.JNI.Widget.Toast;

  25. interface

  26. uses
  27.   Androidapi.JNIBridge,
  28.   Androidapi.JNI.JavaTypes,
  29.   Androidapi.JNI.GraphicsContentViewText;

  30. type
  31.   JToast = interface;//android.widget.Toast

  32.   JToastClass = interface(JObjectClass)
  33.   ['{CF455B66-683D-41F9-B386-0C49E42D4F92}']
  34.     {Property Methods}
  35.     function _GetLENGTH_LONG: Integer;
  36.     function _GetLENGTH_SHORT : Integer;
  37.     {Methods}
  38.     // public Toast (Context context)
  39.     function init(context: JContext): JToast; cdecl;
  40.     // public static Toast makeText (Context context, int resId, int duration)
  41.     function makeText(context: JContext; resId: Integer; duration: Integer): JToast;cdecl;overload;
  42.     // public static Toast makeText (Context context, CharSequence text, int duration)
  43.     function makeText(context: JContext; text: JCharSequence; duration: Integer): JToast;cdecl;overload;
  44.     {Properties}
  45.     property LENGTH_LONG: Integer read _GetLENGTH_LONG;
  46.     property LENGTH_SHORT: Integer read _GetLENGTH_SHORT;
  47.   end;

  48.   [JavaSignature('android/widget/Toast')]
  49.   JToast = interface(JObject)
  50.   ['{4A284317-000C-4048-8674-C475F505CFAF}']
  51.     {Methods}
  52.     // public void cancel ()
  53.     procedure cancel;cdecl;
  54.     // public int getDuration ()
  55.     function getDuration: Integer; cdecl;
  56.     // public int getGravity ()
  57.     function getGravity: Integer; cdecl;
  58.     // public float getHorizontalMargin ()
  59.     function getHorizontalMargin: Single; cdecl;
  60.     // public float getVerticalMargin ()
  61.     function getVerticalMargin: Single; cdecl;
  62.     // public View getView ()
  63.     function getView: JView; cdecl;
  64.     // public int getXOffset ()
  65.     function getXOffset: Integer; cdecl;
  66.     // public int getYOffset ()
  67.     function getYOffset: Integer; cdecl;
  68.     // public void setDuration (int duration)
  69.     procedure setDuration(duration: Integer); cdecl;
  70.     // public void setGravity (int gravity, int xOffset, int yOffset)
  71.     procedure setGravity(gravity, xOffset, yOffset: Integer);cdecl;
  72.     // public void setMargin (float horizontalMargin, float verticalMargin)
  73.     procedure setMargin(horizontalMargin, verticalMargin: Single);cdecl;
  74.     // public void setText (int resId)
  75.     procedure setText(resId: Integer);cdecl;overload;
  76.     // public void setText (CharSequence s)
  77.     procedure setText(s: JCharSequence);cdecl;overload;
  78.     // public void setView (View view)
  79.     procedure setView(view: JView);cdecl;
  80.     // public void show ()
  81.     procedure show;cdecl;
  82.   end;

  83.   TJToast = class(TJavaGenericImport<JToastClass, JToast>) end;

  84.   { TToast }
  85.   TToast = class
  86.   public
  87.     class procedure Show(const text: string; LongHint: Boolean = False);
  88.   end;

  89. implementation

  90. uses FMX.Helpers.Android, Androidapi.Helpers;

  91. { TToast }

  92. class procedure TToast.Show(const text: string; LongHint: Boolean);
  93. var
  94.   LDuration: Integer;
  95. begin
  96.    CallInUIThread
  97.    (
  98.      procedure
  99.      begin
  100.        case LongHint of
  101.          True  : LDuration := TJToast.JavaClass.LENGTH_LONG;
  102.          False : LDuration := TJToast.JavaClass.LENGTH_SHORT;
  103.        end;
  104.        TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(text), LDuration).show;
  105.      end
  106.    );
  107. end;

  108. end.
复制代码

应用单元:
  1. unit Unit1;

  2. interface

  3. uses
  4.   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  5.   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  6.   FMX.Controls.Presentation, FMX.StdCtrls;

  7. type
  8.   TForm1 = class(TForm)
  9.     Button1: TButton;
  10.     Button2: TButton;
  11.     Button3: TButton;
  12.     Button4: TButton;
  13.     Button5: TButton;
  14.     Button6: TButton;
  15.     Button7: TButton;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure Button2Click(Sender: TObject);
  18.     procedure Button3Click(Sender: TObject);
  19.     procedure Button4Click(Sender: TObject);
  20.     procedure Button5Click(Sender: TObject);
  21.     procedure Button6Click(Sender: TObject);
  22.     procedure Button7Click(Sender: TObject);
  23.   private
  24.     { Private declarations }
  25.   public
  26.     { Public declarations }
  27.   end;

  28. var
  29.   Form1: TForm1;

  30. implementation

  31. uses
  32.   Android.JNI.Toast, Androidapi.JNI.Widget.Toast;
  33. {$R *.fmx}
  34. {$R *.NmXhdpiPh.fmx ANDROID}

  35. procedure TForm1.Button1Click(Sender: TObject);
  36. begin
  37.   ShowMessage('与原来的一样哦!'); //消息提示方法一
  38. end;

  39. procedure TForm1.Button2Click(Sender: TObject);
  40. begin
  41.   Toast('消息提示方法二', LongToast);
  42. end;

  43. procedure TForm1.Button3Click(Sender: TObject);
  44. begin
  45.   Toast('消息提示方法二', ShortToast);
  46. end;

  47. procedure TForm1.Button4Click(Sender: TObject);
  48. begin
  49.   TToast.Show('消息提示方法3。', False);
  50. end;

  51. procedure TForm1.Button5Click(Sender: TObject);
  52. begin
  53.   TToast.Show('消息提示方法3。', True);
  54. end;

  55. procedure TForm1.Button6Click(Sender: TObject);
  56. begin
  57.   if MessageDlg('你喜欢我吗?', TMsgDlgType.mtConfirmation,
  58.   [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], -1) = mrYes then
  59.   begin

  60.   end;
  61. end;

  62. procedure TForm1.Button7Click(Sender: TObject);
  63. var
  64.   msresult: string;
  65. begin
  66.   msresult := FMX.Dialogs.InputBox('询问', '你多大了?', '我 10 岁了。');
  67.   ShowMessage('你输入的是:' + msresult);
  68. end;

  69. end.
复制代码



转载请保留当前帖子的链接:http://www.dfwlt.com/forum.php?mod=viewthread&tid=1974 谢谢!

搜索简单,分享不易,且分享且珍惜,您难道不想分享下您的心得?如果觉得本文章好的话,您可以在我们网站上注册,然后发布您的好的心得,让大家共同进步,谢谢!

最新添加

回复

使用道具 举报

0

主题

3

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2015-8-4 21:55:41 | 显示全部楼层
非常不错的帖子。。但是关心的人好少 可惜了
回复 支持 反对

使用道具 举报

1

主题

21

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2016-6-22 22:34:00 | 显示全部楼层
我来顶一下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2017-12-28 11:44:14 | 显示全部楼层
很久的帖子,但还是要顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

申请友链|Archiver|手机版|小黑屋|大富翁Delphi开发技术网站 ( 苏ICP备12065705号-4

GMT+8, 2018-1-21 04:29 , Processed in 0.126753 second(s), 36 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表