提交 f2812dc9 编写于 作者: 若苗瞬's avatar 若苗瞬 😶

Add: init code.

上级 d721a1d4
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="%package%"
android:versionCode="%versionCode%"
android:versionName="%versionName%"
android:installLocation="%installLocation%">
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
<uses-feature android:glEsVersion="0x00020000" android:required="True"/>
<application android:persistent="%persistent%"
android:restoreAnyVersion="%restoreAnyVersion%"
android:label="%label%"
android:debuggable="%debuggable%"
android:largeHeap="%largeHeap%"
android:icon="%icon%"
android:theme="%theme%"
android:hardwareAccelerated="%hardwareAccelerated%"
android:resizeableActivity="false">
<%provider%>
<%application-meta-data%>
<%uses-libraries%>
<%services%>
<!-- Our activity is a subclass of the built-in NativeActivity framework class.
This will take care of integrating with our NDK code. -->
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:label="%activityLabel%"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
android:launchMode="singleTask">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="%libNameValue%" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<%activity%>
<%receivers%>
</application>
</manifest>
<!-- END_INCLUDE(manifest) -->
此差异已折叠。
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
System.Permissions,
{$IFDEF ANDROID}
FMX.Platform.Android,
Androidapi.JNI.Net, FMX.Platform,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
Androidapi.JNIBridge,
Androidapi.Helpers,
Androidapi.JNI.Telephony ,FMX.PhoneDialer, Androidapi.JNI.Os,
{$ENDIF}
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListView.Types,
FMX.ListView.Appearances, FMX.ListView.Adapters.Base, FMX.ListView,
FMX.ScrollBox, FMX.Memo,FMX.DialogService, FMX.Layouts, FMX.ListBox,
System.ImageList, FMX.ImgList, FMX.Ani, FMX.Objects, FMX.Effects,
FMX.Memo.Types, FMX.Edit, FMX.Media;
type
TForm5 = class(TForm)
StyleBook1: TStyleBook;
Panel1: TPanel;
opd_names: TOpenDialog;
mem_names: TMemo;
lsb_names: TListBox;
ListBoxItem1: TListBoxItem;
ListBoxItem2: TListBoxItem;
ListBoxItem3: TListBoxItem;
ImageList1: TImageList;
spb_loadname: TSpeedButton;
spb_go: TSpeedButton;
lbl_winner: TLabel;
Timer1: TTimer;
FloatAnimation1: TFloatAnimation;
FloatAnimation2: TFloatAnimation;
mem_winners: TMemo;
Image1: TImage;
GlowEffect1: TGlowEffect;
FloatAnimation3: TFloatAnimation;
ShadowEffect1: TShadowEffect;
Edit1: TEdit;
spb_loadmusic: TSpeedButton;
MediaPlayer1: TMediaPlayer;
opd_music: TOpenDialog;
procedure spb_loadnameClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure spb_goClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure spb_loadmusicClick(Sender: TObject);
private
tmpi:Integer;
musicName:String;
public
procedure LoadList();
end;
var
Form5: TForm5;
implementation
{$R *.fmx}
procedure TForm5.LoadList();
var
i:Integer;
begin
if FileExists(edit1.Text.Trim) then
begin
FloatAnimation3.Enabled:=false;
lbl_winner.Visible:=false;
mem_names.Lines.Clear;
mem_names.Lines.LoadFromFile(edit1.Text.Trim,TEncoding.UTF8);
mem_names.Text:= mem_names.Text.Trim;
lsb_names.Items.Clear;
mem_winners.Lines.Clear;
GlowEffect1.Enabled:=false;
ShadowEffect1.Enabled:=false;
for i := 0 to mem_names.Lines.Count -1 do
begin
lsb_names.Items.Add(mem_names.Lines[i]);
lsb_names.ItemByIndex(i).ImageIndex:=0;
end;
TDialogService.MessageDialog('加载列表总共:'+IntToStr(lsb_names.Items.Count)+'个项目。' ,TMsgDlgType.mtInformation,[TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1,nil);
end
else
begin
TDialogService.MessageDialog('加载文件取消!' ,TMsgDlgType.mtError,[TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1,nil);
end;
end;
procedure TForm5.FormCreate(Sender: TObject);
var
FPermissionReadExternalStorage,
FPermissionWriteExternalStorage:String;
begin
{$IFDEF ANDROID}
//FPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CAMERA);
FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
PermissionsService.RequestPermissions([FPermissionReadExternalStorage,FPermissionWriteExternalStorage],
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
begin
if (AGrantResults[0] = TPermissionStatus.Granted) then
begin
TDialogService.ShowMessage('STORAGE permission granted, OK.');
end
else
begin
TDialogService.ShowMessage('STORAGE permission not granted');
end;
end);
{$ENDIF}
mem_names.Lines.Clear;
mem_winners.Lines.Clear;
lsb_names.Items.Clear;
lbl_winner.Visible:=false;
GlowEffect1.Enabled:=false;
ShadowEffect1.Enabled:=false;
FloatAnimation3.Enabled:=false;
musicName:='/storage/emulated/0/背景音乐.mp3';
end;
procedure TForm5.spb_goClick(Sender: TObject);
begin
if spb_go.Text='开始摇奖' then
begin
if lsb_names.Items.Count<=0 then
begin
TDialogService.MessageDialog('请先加载抽奖人员名单!' ,TMsgDlgType.mtError,[TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1,nil);
end
else if lsb_names.Items.Count<=1 then
begin
TDialogService.MessageDialog('仅有一个人无法抽奖哦!' ,TMsgDlgType.mtError,[TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1,nil);
end
else
begin
if mem_winners.Lines.Count>=lsb_names.Items.Count then
begin
TDialogService.MessageDialog('所有人都中奖了!' ,TMsgDlgType.mtWarning,[TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1,nil);
end
else
begin
lbl_winner.Visible:=true;
spb_go.Text:='停止摇奖';
spb_go.Hint:='停止摇奖';
spb_loadname.Enabled:=false;
spb_loadmusic.Enabled:=false;
spb_go.StyleLookup:='pausetoolbuttonbordered';
GlowEffect1.Enabled:=false;
ShadowEffect1.Enabled:=true;
FloatAnimation1.Enabled:=true;
FloatAnimation2.Enabled:=true;
FloatAnimation3.Enabled:=false;
GlowEffect1.Softness:=0.4;
lbl_winner.TextSettings.Font.Size:=112;
Timer1.Enabled:=true;
if FileExists(musicName) then
begin
MediaPlayer1.FileName:=musicName;
MediaPlayer1.Play;
end;
end;
end;
end
else
begin
MediaPlayer1.Stop;
spb_loadname.Enabled:=true;
spb_loadmusic.Enabled:=true;
spb_go.Text:='开始摇奖';
spb_go.Hint:='开始摇奖';
spb_go.StyleLookup:='playtoolbuttonbordered';
FloatAnimation1.Enabled:=false;
FloatAnimation2.Enabled:=false;
lbl_winner.RotationAngle:=0;
Timer1.Enabled:=false;
Randomize;
repeat
tmpi:=Random(lsb_names.Items.Count);
until mem_winners.Lines.IndexOf(lsb_names.Items[tmpi])<0;
lsb_names.ItemByIndex(tmpi).IsSelected:=true;
lbl_winner.Text := lsb_names.Items[tmpi];
mem_winners.Lines.Add(lbl_winner.Text);
lbl_winner.TextSettings.Font.Size:=168;
GlowEffect1.Enabled:=true;
ShadowEffect1.Enabled:=false;
FloatAnimation3.Enabled:=true;
end;
end;
procedure TForm5.spb_loadmusicClick(Sender: TObject);
begin
if opd_music.Execute then
begin
musicName:=opd_music.FileName;
end
end;
procedure TForm5.spb_loadnameClick(Sender: TObject);
begin
if opd_names.Execute then
begin
edit1.Text:=opd_names.FileName;
end;
LoadList();
end;
procedure TForm5.Timer1Timer(Sender: TObject);
begin
Randomize;
tmpi:=Random(lsb_names.Items.Count);
lsb_names.ItemByIndex(tmpi).IsSelected:=true;
lbl_winner.Text := lsb_names.Items[tmpi];
Application.ProcessMessages;
end;
end.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Condition="Exists('$(BDS)\bin\CodeGear.Deployment.targets')" Project="$(BDS)\bin\CodeGear.Deployment.targets"/>
<ProjectExtensions>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<PropertyGroup>
<DeviceId Condition="'$(Platform)'=='Android'"/>
<DeviceId Condition="'$(Platform)'=='Android64'"/>
</PropertyGroup>
<ItemGroup Condition="'$(Platform)'=='Win32'">
<DeployFile Include="res\ICON\cia_150.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\Assets\</RemoteDir>
<RemoteName>Logo150x150.png</RemoteName>
<DeployClass>UWP_DelphiLogo150</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Win32\Debug\pro_Lottery.exe" Condition="'$(Config)'=='Debug'">
<RemoteDir>pro_Lottery\</RemoteDir>
<RemoteName>pro_Lottery.exe</RemoteName>
<DeployClass>ProjectOutput</DeployClass>
<Operation>0</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
<Required>True</Required>
</DeployFile>
<DeployFile Include="res\ICON\cia_44.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\Assets\</RemoteDir>
<RemoteName>Logo44x44.png</RemoteName>
<DeployClass>UWP_DelphiLogo44</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='Win64'"/>
<ItemGroup Condition="'$(Platform)'=='Linux64'"/>
<ItemGroup Condition="'$(Platform)'=='Android'"/>
<ItemGroup Condition="'$(Platform)'=='Android64'">
<DeployFile Include="res\ICON\cia_36.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-hdpi\</RemoteDir>
<RemoteName>ic_notification.png</RemoteName>
<DeployClass>Android_NotificationIcon36</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\colors.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\values\</RemoteDir>
<RemoteName>colors.xml</RemoteName>
<DeployClass>Android_Colors</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\Logo_470.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-normal\</RemoteDir>
<RemoteName>splash_image.png</RemoteName>
<DeployClass>Android_SplashImage470</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\cia_144.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-xxhdpi\</RemoteDir>
<RemoteName>ic_launcher.png</RemoteName>
<DeployClass>Android_LauncherIcon144</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\classes.dex" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\classes\</RemoteDir>
<RemoteName>classes.dex</RemoteName>
<DeployClass>AndroidClassesDexFile</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\AndroidManifest.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\</RemoteDir>
<RemoteName>AndroidManifest.xml</RemoteName>
<DeployClass>ProjectAndroidManifest</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\Logo_640.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-large\</RemoteDir>
<RemoteName>splash_image.png</RemoteName>
<DeployClass>Android_SplashImage640</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\libpro_Lottery.so" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\library\lib\arm64-v8a\</RemoteDir>
<RemoteName>libpro_Lottery.so</RemoteName>
<DeployClass>ProjectOutput</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
<Required>True</Required>
</DeployFile>
<DeployFile Include="Android64\Release\styles-v21.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\values-v21\</RemoteDir>
<RemoteName>styles.xml</RemoteName>
<DeployClass>AndroidSplashStylesV21</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\cia_96.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-xxxhdpi\</RemoteDir>
<RemoteName>ic_notification.png</RemoteName>
<DeployClass>Android_NotificationIcon96</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\Logo_960.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-xlarge\</RemoteDir>
<RemoteName>splash_image.png</RemoteName>
<DeployClass>Android_SplashImage960</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\cia_48.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-xhdpi\</RemoteDir>
<RemoteName>ic_notification.png</RemoteName>
<DeployClass>Android_NotificationIcon48</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\splash_image_def.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable\</RemoteDir>
<RemoteName>splash_image_def.xml</RemoteName>
<DeployClass>AndroidSplashImageDef</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\styles.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\values\</RemoteDir>
<RemoteName>styles.xml</RemoteName>
<DeployClass>AndroidSplashStyles</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="$(BDS)\lib\android\debug\armeabi\libnative-activity.so" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\library\lib\armeabi\</RemoteDir>
<RemoteName>libpro_Lottery.so</RemoteName>
<DeployClass>AndroidLibnativeArmeabiFile</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-mdpi\</RemoteDir>
<RemoteName>ic_notification.png</RemoteName>
<DeployClass>Android_NotificationIcon24</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="Android64\Release\strings.xml" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\values\</RemoteDir>
<RemoteName>strings.xml</RemoteName>
<DeployClass>Android_Strings</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\cia_72.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-xxhdpi\</RemoteDir>
<RemoteName>ic_notification.png</RemoteName>
<DeployClass>Android_NotificationIcon72</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="$(BDS)\lib\android\debug\mips\libnative-activity.so" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\library\lib\mips\</RemoteDir>
<RemoteName>libpro_Lottery.so</RemoteName>
<DeployClass>AndroidLibnativeMipsFile</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="res\ICON\Logo_426.png" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\res\drawable-small\</RemoteDir>
<RemoteName>splash_image.png</RemoteName>
<DeployClass>Android_SplashImage426</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
<DeployFile Include="$(BDS)\lib\android\debug\armeabi-v7a\libnative-activity.so" Condition="'$(Config)'=='Release'">
<RemoteDir>pro_Lottery\library\lib\armeabi-v7a\</RemoteDir>
<RemoteName>libpro_Lottery.so</RemoteName>
<DeployClass>AndroidLibnativeArmeabiv7aFile</DeployClass>
<Operation>1</Operation>
<LocalCommand/>
<RemoteCommand/>
<Overwrite>True</Overwrite>
</DeployFile>
</ItemGroup>
</Project>
program pro_Lottery;
uses
System.StartUpCopy,
FMX.Forms,
Unit1 in 'Unit1.pas' {Form5};
{$R *.res}
begin
Application.Initialize;
Application.FormFactor.Orientations := [TFormOrientation.Landscape, TFormOrientation.InvertedLandscape];
Application.CreateForm(TForm5, Form5);
Application.Run;
end.
此差异已折叠。
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<Transactions>
<Transaction>1899-12-30 00:00:00.000.111,C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Lottery\pro_Lottery.dproj</Transaction>
<Transaction>1899-12-30 00:00:00.000.439,=C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.173,=C:\Users\Shion\Documents\Embarcadero\Studio\Projects\Lottery\Unit1.pas</Transaction>
</Transactions>
</BorlandProject>
文件已添加
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册