delphi android 中 Toast 的实现(老外写的UNIT)
unit Android.JNI.Toast;
// Java bridge class imported by hand by Brian Long
(http://blong.com)
interface
{$IFDEF ANDROID}
uses
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.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。