Android实例-消息框(XE8+小米2)
方法一支持。
方法二与方法三都是三方单元,功能相同。
方法4与方法5报错,提示平台不支持。
第三方单元一:
unit Android.JNI.Toast; // Java bridge class imported by hand by Brian Long (http://blong.com)
interface {$IFDEF ANDROID} uses
Androidapi.Helpers,
Androidapi.JNIBridge,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText;
{$ENDIF}
{$IFDEF ANDROID} type
TToastLength = (LongToast, ShortToast); JToast = interface; JToastClass = interface(JObjectClass)
['{69E2D233-B9D3-4F3E-B882-474C8E1D50E9}']
{ Property methods }
function _GetLENGTH_LONG: Integer; cdecl;
function _GetLENGTH_SHORT: Integer; cdecl;
{ Methods }
function init(context: JContext): JToast; cdecl; overload;
function makeText(context: JContext; text: JCharSequence; duration: Integer)
: JToast; cdecl;
{ Properties }
property LENGTH_LONG: Integer read _GetLENGTH_LONG;
property LENGTH_SHORT: Integer read _GetLENGTH_SHORT;
end; [JavaSignature('android/widget/Toast')]
JToast = interface(JObject)
['{FD81CC32-BFBC-4838-8893-9DD01DE47B00}']
{ Methods }
procedure cancel; cdecl;
function getDuration: Integer; cdecl;
function getGravity: Integer; cdecl;
function getHorizontalMargin: Single; cdecl;
function getVerticalMargin: Single; cdecl;
function getView: JView; cdecl;
function getXOffset: Integer; cdecl;
function getYOffset: Integer; cdecl;
procedure setDuration(value: Integer); cdecl;
procedure setGravity(gravity, xOffset, yOffset: Integer); cdecl;
procedure setMargin(horizontalMargin, verticalMargin: Single); cdecl;
procedure setText(s: JCharSequence); cdecl;
procedure setView(view: JView); cdecl;
procedure show; cdecl;
end; TJToast = class(TJavaGenericImport<JToastClass, JToast>)
end; procedure Toast(const Msg: string; duration: TToastLength = ShortToast); {$ENDIF} implementation {$IFDEF ANDROID} uses
FMX.Helpers.Android; procedure Toast(const Msg: string; duration: TToastLength);
var
ToastLength: Integer;
begin
if duration = ShortToast then
ToastLength := TJToast.JavaClass.LENGTH_SHORT
else
ToastLength := TJToast.JavaClass.LENGTH_LONG;
CallInUiThread(
procedure
begin
TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(Msg),
ToastLength).show
end);
end;
{$ENDIF} end.
第三方单元二:
{***************************************************************************}
{ }
{ 功能:Android Toast提示消息框 }
{ 名称:Androidapi.JNI.Widget.Toast.pas }
{ 版本:1.0 }
{ 环境:Win7 Sp1 64bit }
{ 工具:Delphi XE7 }
{ 日期:2014-11-23 19:45:35 }
{ 用法:TToast.Show(MessageText, isLongHint) }
{--------------------------------------------------------------------------}
{ 原版作者:ying32 }
{ QQ:396506155 }
{ MSN :ying_32@live.cn }
{ E-mail:yuanfen3287@vip.qq.com }
{ Website:http://blog.csdn.net/zyjying520/article/details/26158941 }
{ 版权所有 (C) 2013-2013 ying32.tk All Rights Reserved }
{---------------------------------------------------------------------------}
{ 修改者:tht2009 }
{ 改动:1、去掉注释掉的方法 }
{ 2、移动FMX.Helpers.Android引用声明到实现区 }
{ 3、增加Androidapi.Helpers引用 }
{ }
{***************************************************************************} unit Androidapi.JNI.Widget.Toast; interface uses
Androidapi.JNIBridge,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText; type
JToast = interface;//android.widget.Toast JToastClass = interface(JObjectClass)
['{CF455B66-683D-41F9-B386-0C49E42D4F92}']
{Property Methods}
function _GetLENGTH_LONG: Integer;
function _GetLENGTH_SHORT : Integer;
{Methods}
// public Toast (Context context)
function init(context: JContext): JToast; cdecl;
// public static Toast makeText (Context context, int resId, int duration)
function makeText(context: JContext; resId: Integer; duration: Integer): JToast;cdecl;overload;
// public static Toast makeText (Context context, CharSequence text, int duration)
function makeText(context: JContext; text: JCharSequence; duration: Integer): JToast;cdecl;overload;
{Properties}
property LENGTH_LONG: Integer read _GetLENGTH_LONG;
property LENGTH_SHORT: Integer read _GetLENGTH_SHORT;
end; [JavaSignature('android/widget/Toast')]
JToast = interface(JObject)
['{4A284317-000C-4048-8674-C475F505CFAF}']
{Methods}
// public void cancel ()
procedure cancel;cdecl;
// public int getDuration ()
function getDuration: Integer; cdecl;
// public int getGravity ()
function getGravity: Integer; cdecl;
// public float getHorizontalMargin ()
function getHorizontalMargin: Single; cdecl;
// public float getVerticalMargin ()
function getVerticalMargin: Single; cdecl;
// public View getView ()
function getView: JView; cdecl;
// public int getXOffset ()
function getXOffset: Integer; cdecl;
// public int getYOffset ()
function getYOffset: Integer; cdecl;
// public void setDuration (int duration)
procedure setDuration(duration: Integer); cdecl;
// public void setGravity (int gravity, int xOffset, int yOffset)
procedure setGravity(gravity, xOffset, yOffset: Integer);cdecl;
// public void setMargin (float horizontalMargin, float verticalMargin)
procedure setMargin(horizontalMargin, verticalMargin: Single);cdecl;
// public void setText (int resId)
procedure setText(resId: Integer);cdecl;overload;
// public void setText (CharSequence s)
procedure setText(s: JCharSequence);cdecl;overload;
// public void setView (View view)
procedure setView(view: JView);cdecl;
// public void show ()
procedure show;cdecl;
end; TJToast = class(TJavaGenericImport<JToastClass, JToast>) end; { TToast }
TToast = class
public
class procedure Show(const text: string; LongHint: Boolean = False);
end; implementation uses FMX.Helpers.Android, Androidapi.Helpers; { TToast } class procedure TToast.Show(const text: string; LongHint: Boolean);
var
LDuration: Integer;
begin
CallInUIThread
(
procedure
begin
case LongHint of
True : LDuration := TJToast.JavaClass.LENGTH_LONG;
False : LDuration := TJToast.JavaClass.LENGTH_SHORT;
end;
TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(text), LDuration).show;
end
);
end; end.
应用单元:
unit Unit1; interface uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation uses
Android.JNI.Toast, Androidapi.JNI.Widget.Toast;
{$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID} procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('与原来的一样哦!'); //消息提示方法一
end; procedure TForm1.Button2Click(Sender: TObject);
begin
Toast('消息提示方法二', LongToast);
end; procedure TForm1.Button3Click(Sender: TObject);
begin
Toast('消息提示方法二', ShortToast);
end; procedure TForm1.Button4Click(Sender: TObject);
begin
TToast.Show('消息提示方法3。', False);
end; procedure TForm1.Button5Click(Sender: TObject);
begin
TToast.Show('消息提示方法3。', True);
end; procedure TForm1.Button6Click(Sender: TObject);
begin
if MessageDlg('你喜欢我吗?', TMsgDlgType.mtConfirmation,
[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], -) = mrYes then
begin end;
end; procedure TForm1.Button7Click(Sender: TObject);
var
msresult: string;
begin
msresult := FMX.Dialogs.InputBox('询问', '你多大了?', '我 10 岁了。');
ShowMessage('你输入的是:' + msresult);
end; end.
Android实例-消息框(XE8+小米2)的更多相关文章
- Android实例-操作摄像头(XE8+小米2)
结果: 1.同样是照相,自己的程序设置为高质量时刷新慢,而小米手机的相机那真心反映快呀. 2.就算我设置为最高质量,可相片也没有小米手机的相片大.我最大是2000*1000,而小米可以做到3000*2 ...
- Android实例-手机震动(XE8+小米2)
相关资料:http://blog.csdn.net/laorenshen/article/details/41148843 结果: 1.打开Vibrate权限为True. 2.规律震动我没感觉出来,有 ...
- Android实例-LocationSensor位置传感器(XE8+小米2)
结果: 1.启动后有时会闪退,后来重新做的工程就好了.原因不明(可能与地理反码有关). 2.原文是用的GOOGLE地图显示位置,但在咱们这里好像不行,改为百度,但百度用的是HTML文件.太麻烦了,大家 ...
- Android实例-MotionSensor加速度(XE8+小米2)
结果: 1. 实例代码: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classe ...
- Android实例-设置消息提醒(XE8+小米2)
相关资料: 1.官网实例:http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Notification ...
- Android实例-实现扫描二维码并生成二维码(XE8+小米5)
相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)
注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)
相关资料: 注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYi ...
- 【C#】分享一个可携带附加消息的增强消息框MessageBoxEx
--------------201507160917更新--------------- 无意中发现标准消息框在Windows7是有声音的,只是在Windows server 2008(R2)无声,而我 ...
随机推荐
- 修改MYSQL数据库表的字符集
MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令.包括查看 MySQL 数据库服务器字符集.查看 MySQL 数据库字符集,以及数据表和字段的 ...
- jvisualvm 使用
和jconsole侧重于内存分析和检测不同,jvisualvm在线程分析方面更强大一些,下面简单介绍下使用: 1. 在要监控的java应用配置文件中,本例是apache-jmeter/bin/jmet ...
- C#基础精华02(静态类,值类型,引用类型,枚举,结构,ref与out)
静态类 静态类不能被其他类继承,静态成员亦不能被继承(访问的是同一个),备注1. 静态类只能继承自Object类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接 ...
- C++内存中的封装、继承、多态(下)
上篇讲述了内存中的封装模型,下篇我们讲述一下继承和多态. 二.继承与多态情况下的内存布局 由于继承下的内存布局以及构造过程很多书籍都讲得比较详细,所以这里不细讲.重点讲多态. 继承有以下这几种情况: ...
- VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的) 的时间远多于写代码的时间.通常,debug是指发现 ...
- git同步远端的分支
如果用命令行,运行 git fetch,可以将远程分支信息获取到本地, 再运行 git checkout -b local-branchname origin/remote_branchname 就 ...
- node安装插件方法
node安装插件方法有几种,这里列出常用的两种方法: 方法1: 进入要安装插件的目录,直接用 npm 软件安装包安装,如(安装express): cd /project npm install -g ...
- 安装php 带debug
gdb安装包 在CentOS6.4下使用gdb进行调试的时候, 使用bt(breaktrace)命令时,会弹出如下的提示: 头一天提示: Missing separate debuginfos, ...
- [POJ 2461] Billiard
同swustoj 11 Billiard Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1362 Accepted: 8 ...
- 【转】Android开发调试工具ADB的使用
原文网址:http://www.cnblogs.com/meil/archive/2012/05/24/2516055.html ADB(Android Debug Bridge)是Android S ...