スマートフォンアプリ ページ遷移をするには?

解決


明太子  2018-01-31 01:34:35  No: 48967

以前XE7、FMXでスマートフォンアプリを開発しかけていたのですが
ページ遷移時にアニメーション?を利用しての遷移ってできるんでしょうか?
(SmartNewsのようなもの)

Androidで実装しようとしたとき、
調べたら、デザイン用のXMLファイルをいじらないといけない
みたいなことが書かれていたので、あきらめてたのですが・・・
Delphi10が出てきて、また変わったりしたのでしょうか?


KONNOYA  2018-01-31 07:29:40  No: 48968

TTabControlコンポーネントを利用する事でページ遷移を実現できます。

TTabControl.SetActiveTabWithTransition( TabItem2, TTabTransition.Slide, TTabTransitionDirection.Normal);
で、指定のタブへのアニメーションページ遷移が実現できます。
第3引数の TTabTransitionDirection を TTabTransitionDirection.Reversed にすると「戻る」を実現できます。

これよりも、「進む」or「戻る」を自動的に判別させてページ遷移を行いたい場合は、
TTabControl.GotoVisibleTab( ページ番号 );
が便利です。

あと、第32回 デベロッパーキャンプの「フォームアニメーションで満足度向上!モバイルアプリ改善術」が参考になるかと思います。


明太子  2018-02-01 03:04:17  No: 48969

KONNOYA  さん回答ありがとうございます。

実はですね、TTabControlを使用してのページ遷移は発見していたんです。。。
書き方が足りなかったです。すいません。

TGestureManagerをつなげて、左右のフリック発生時に
KONNOYAさんの書かれているのを実装していたんですが、
フリックが発生した際の速度?によって、ページ遷移のスピードを変えたい。
加えて、途中で止めた際に、ページ遷移が途中で止まるようにしたかったんです。


KONNOYA  2018-02-01 07:24:10  No: 48970

そうでしたか、ちょっといまAndroidの環境が無いので不確かですが、
私が過去に行った事を書きます。

・TTabControlコンポーネント
  タブをクリックした時にページ遷移させるのに便利ですが、
  進んでいる途中で戻るという様な事ができません。

・MultiViewコンポーネント
  これで試した時は、確かその様な動作が出来た気がします。
  ただし、画面外から指を運ぶフリック動作?でしかページ遷移できなかった為、
  私は気に入りませんでした。
  ※ 適当なフリックでもページ遷移したい。

・自力で作成
  明太子様のおっしゃるTGestureManagerによる方法では、
  確か記憶ではジェスチャ終了後(指を離した後)にイベントが発生していた様なので、それは利用せず、
  InterractiveGesturesプロパティでジェスチャを設定し、OnGestureで処理する様にして、Panの座標を管理、
  ジェスチャで複数枚のパネルを移動、画面の1/3まで進んでいて離したらページをめくる。
  行かなければページを戻すという様な処理をしていました。
  めくって画面外に座標移動したページ(パネル)は BringToFront や SendToBack で
  レイヤの前後移動した後、座標を0,0に戻すという感じで作っていました。

実はこんなに簡単にできるよ!という物や方法があれば私も教わりたいです。


KONNOYA  2018-02-01 18:34:30  No: 48971

TMultiViewをもう一度試してみました。

>画面外から指を運ぶフリック動作?でしかページ遷移できなかった

とか書いていましたけれど(汗

MultiView.DrawerOptions.TouchAreaSizeプロパティにフォーム幅を入れると、
画面のどこからでもスライドできる事を確認しました。

>加えて、途中で止めた際に、ページ遷移が途中で止まるようにしたかったんです。 
これも可能で、スライドさせてたが、やっぱり戻るみたいな事もできます。

これで明太子様のおしゃられる動作が実現出来そうに思えます。


明太子  2018-02-02 01:39:42  No: 48972

>>画面外から指を運ぶフリック動作?でしかページ遷移できなかった 

>とか書いていましたけれど(汗 

あれれ、そうだったんですか^^;

試したのが数年前のことで・・・記憶が曖昧でした(苦笑

すみません、今現在、FMXが使える環境がないので、
試すことができないので、自分で実験してみることもできませんでした。

KONNOYA様の結果で私の思っていることが実現できそうなので、
解決とさせていただきます。

ありがとうございます。
また、今後ともよろしくお願い致します。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加