ios – 使用幻灯片切换进行表单显示

对于我的应用程序,当显示新表单时,我希望有一个转换幻灯片,当它们看起来有点类似于Tab项目如何与幻灯片转换一起出现 – 实际上,以相同的方式.

我无法找到有关具体问题的任何疑难解答或示例.我能想到的唯一工作就是对所有三种形式使用制表符控件并将它们放在制表符控件中.

我也尝试过Form.animateFloatWait()函数,就像通常对窗体上的控件一样,但无济于事.

如何让我的表单在视图中滑动?

最佳答案 使用RAD Studio XE5(Delphi或C Builder),表单显示为fullScreen.

因此,如果我们需要通过幻灯片转换产生一些效果,我们需要使用TPanel来获得完美的性能:

>添加TPanel,将其设置为fullsize,并且不要使用align来执行此操作.
我们需要在FormCreate方法中初始化TPanel的位置和大小.
>为表单创建第二个TPanel,而不是让第二个TPanel成为第一个TPanel的子级.
初始化第二个TPanel的位置和大小,确保它位于屏幕的右侧.

FormCreate方法:

procedure TFormMainView.FormCreate(Sender: TObject);
var
 newLocation : TPosition;
begin
  newLocation := self.btnLogin.Position;
  newLocation.X := screen.Size.Width - self.btnLogin.Width - 5;
  self.btnLogin.Position := newLocation;

  self.PanelMainView.Position.X := 0;
  self.PanelMainView.Position.Y := 0;
  self.PanelMainView.Width := screen.Size.Width;
  self.PanelMainView.Height := screen.Size.Height;

  self.PanelLogin.Position.X := screen.Size.Width;
  self.PanelLogin.Position.Y := 0;
  self.PanelLogin.Width := screen.Size.Width;
  self.PanelLogin.Height := screen.Size.Height;
end;

使用Screen.Size,我们可以确保TPanel可以适应各种尺寸的设备,比如Android手机.
并在第一个和第二个视图上设置一个按钮,以切换幻灯片动画(第一个面板上的按钮切换
要滑动到左侧的动画,以及第二个面板上的按钮,要将动画切换为向右滑动.)

让我们将第一个面板上的按钮命名为btnLogin,因此处理btnLoginClick事件的方法是:
注意:FloatAnimation1用于第二个面板,FloatAnimation2用于第一个面板,“属性名称”
两个TFloatAnimation都是“Position.X”,这将使动画在X轴上:

procedure TFormMainView.btnLoginClick(Sender: TObject);
begin
   self.FloatAnimation2.StartValue := 0;
   self.FloatAnimation2.StopValue := -1 * screen.Size.Width;

   self.FloatAnimation1.StartValue := screen.Size.Width;
   self.FloatAnimation1.StopValue := 0;

   self.FloatAnimation2.start;
   self.FloatAnimation1.Start;
end;

第二个面板的按钮名为“btnBacktoMainView”,事件处理程序是:

procedure TFormMainView.btnBackToMainScreenClick(Sender: TObject);
begin
   self.FloatAnimation1.StartValue := self.PanelLogin.Position.X;
   self.FloatAnimation1.StopValue := self.PanelLogin.Position.X + self.PanelLogin.Width;

   self.FloatAnimation2.StartValue := self.PanelMainView.Position.X;
   self.FloatAnimation2.StopValue := self.PanelMainView.Position.X + self.PanelMainView.Width;

   self.FloatAnimation1.Start;
   self.FloatAnimation2.Start;
end;

看到?我们做的是设置动画对象的“statValue”,“StopValue”,并调用start方法,
面板滑动如此之大.

也许这种方式不是进行视图转换的最佳方式,但它可以工作,并且表现完美.
在过去的10年里,我曾经使用类似的方式在Win32应用程序中处理多个视图,
效果很好.

唯一的区别是我必须使用TTimer和Application.ProcessMessage来确保
Win32中的动画工作. (当然是表格项目).

我在XE5中以这种方式测试iOS或Android,并在任一平台上工作.与某人分享
每一个人.

点赞