同じスマートフォンでも4.Xインチから5.Xインチまでさまざまな大きさのディスプレイが搭載されており、さらにタブレットまで含めてアプリケーションを対応しようとするとかなり大変です。
Caedeにはこれらの課題に対して、「エラスティック(伸長圧縮技術)」と「ダイナミックレイアウトシステム」を提供しており、さまざまなデバイスに対して1つのプロジェクトで開発できるようになっています。
Caedeには「エラスティック」と呼ばれる技術が使用できます。これはグラフィックコンテンツの幅や高さに対して通常は固定値の「18px」や「30cm」などのように距離を設定しますが、そうすると大きさの違うディスプレイを思ったデバイスでは小さく表示されてしまったり、崩れてしまったりします。そこで固定値の代わりに「make-elasticプロシージャ」というものをしてすることで画面または親のグラフィックのサイズに合わせて伸び縮みさせることができます。対象は「COM.CAEDE.CAEDESAMPLE」内の「tparent-detail.scurl」の「SParentDetailGraphicクラス」です。
「sparent-detail.scurl」の「SParentDetailGraphic」クラス
VBoxのwidthにmake-elasticプロシージャが設定されています。これにより画面サイズに合わせて伸長圧縮されるようになります。make-elasticプロシージャを使用するとかなり細かい設定が可能です。たとえば伸長係数を設定することにより、以下のように1:2の比率で常に伸長圧縮するなどです。対象は「COM.CAEDE.CAEDESAMPLE」内の「tparent-top.scurl」の「TParentTopGraphicクラス」と「menu-block.scurl」の「MenuBlockGraphicクラス」です。
TParentTopGraphicクラスではVBoxにエラスティックが設定されていますが、stretchnessという伸長係数オプションが2と設定されています。
「tparent-top.scurl」の「TParentToplGraphicクラス」
逆にTParentTopGraphicクラスで管理されるMenuBlockGraphicクラスではstretchnessという伸長係数オプションが1と設定されています。
「menu-block.scurl」のMenuBlockGraphicクラス
この伸長係数により伸長圧縮の比率が決定され、画面のように1:2の関係で常に表示されるようになります。Stretchnessオプション以外にもさまざまなオプションを用意しています。詳しくはCurlドキュメントから「エラスティック」や「make-elastic」プロシージャーを検索し、参照してください。
ダイナミックレイアウトとは「 2.Caedeを使用した際のCurl言語の基本的な構文 」で説明したようにスマートフォンからタブレットまでの複数のディスプレイサイズに対応したプログラムを実装する方法です。ダイナミックレイアウトを使用する場合は以下のように最初にスマートフォンの設計から開始します。
またロジックについてはブロックのScreenクラスでもコントローラーとなる画面のScreenクラスでもどちらでも実装ができますが以下のように整理すると明確になります。
本サンプルでは以下の図のような構造でブロックおよびコントローラーとなるクラスを分解しています。
詳しくは各ブロッククラスや画面クラスのGraphicクラス、Screenクラスを参照してみてください。