以前XE7、FMXでスマートフォンアプリを開発しかけていたのですが
ページ遷移時にアニメーション?を利用しての遷移ってできるんでしょうか?
(SmartNewsのようなもの)
Androidで実装しようとしたとき、
調べたら、デザイン用のXMLファイルをいじらないといけない
みたいなことが書かれていたので、あきらめてたのですが・・・
Delphi10が出てきて、また変わったりしたのでしょうか?
TTabControlコンポーネントを利用する事でページ遷移を実現できます。
TTabControl.SetActiveTabWithTransition( TabItem2, TTabTransition.Slide, TTabTransitionDirection.Normal);
で、指定のタブへのアニメーションページ遷移が実現できます。
第3引数の TTabTransitionDirection を TTabTransitionDirection.Reversed にすると「戻る」を実現できます。
これよりも、「進む」or「戻る」を自動的に判別させてページ遷移を行いたい場合は、
TTabControl.GotoVisibleTab( ページ番号 );
が便利です。
あと、第32回 デベロッパーキャンプの「フォームアニメーションで満足度向上!モバイルアプリ改善術」が参考になるかと思います。
KONNOYA さん回答ありがとうございます。
実はですね、TTabControlを使用してのページ遷移は発見していたんです。。。
書き方が足りなかったです。すいません。
TGestureManagerをつなげて、左右のフリック発生時に
KONNOYAさんの書かれているのを実装していたんですが、
フリックが発生した際の速度?によって、ページ遷移のスピードを変えたい。
加えて、途中で止めた際に、ページ遷移が途中で止まるようにしたかったんです。
そうでしたか、ちょっといまAndroidの環境が無いので不確かですが、
私が過去に行った事を書きます。
・TTabControlコンポーネント
タブをクリックした時にページ遷移させるのに便利ですが、
進んでいる途中で戻るという様な事ができません。
・MultiViewコンポーネント
これで試した時は、確かその様な動作が出来た気がします。
ただし、画面外から指を運ぶフリック動作?でしかページ遷移できなかった為、
私は気に入りませんでした。
※ 適当なフリックでもページ遷移したい。
・自力で作成
明太子様のおっしゃるTGestureManagerによる方法では、
確か記憶ではジェスチャ終了後(指を離した後)にイベントが発生していた様なので、それは利用せず、
InterractiveGesturesプロパティでジェスチャを設定し、OnGestureで処理する様にして、Panの座標を管理、
ジェスチャで複数枚のパネルを移動、画面の1/3まで進んでいて離したらページをめくる。
行かなければページを戻すという様な処理をしていました。
めくって画面外に座標移動したページ(パネル)は BringToFront や SendToBack で
レイヤの前後移動した後、座標を0,0に戻すという感じで作っていました。
実はこんなに簡単にできるよ!という物や方法があれば私も教わりたいです。
TMultiViewをもう一度試してみました。
>画面外から指を運ぶフリック動作?でしかページ遷移できなかった
とか書いていましたけれど(汗
MultiView.DrawerOptions.TouchAreaSizeプロパティにフォーム幅を入れると、
画面のどこからでもスライドできる事を確認しました。
>加えて、途中で止めた際に、ページ遷移が途中で止まるようにしたかったんです。
これも可能で、スライドさせてたが、やっぱり戻るみたいな事もできます。
これで明太子様のおしゃられる動作が実現出来そうに思えます。
>>画面外から指を運ぶフリック動作?でしかページ遷移できなかった
>とか書いていましたけれど(汗
あれれ、そうだったんですか^^;
試したのが数年前のことで・・・記憶が曖昧でした(苦笑
すみません、今現在、FMXが使える環境がないので、
試すことができないので、自分で実験してみることもできませんでした。
KONNOYA様の結果で私の思っていることが実現できそうなので、
解決とさせていただきます。
ありがとうございます。
また、今後ともよろしくお願い致します。