スケーリング動作について

 

 

Biz/Browser SmartDeviceでは、Formクラスに追加されたプロパティHorizontalScaleVerticalScaleFontScaleを利用して擬似的な拡大縮小(スケーリング)、縦横比の変更を行うことが可能になりました。

この章ではスケーリング動作における注意点を記載します。

 

スケーリングの実行原理

 

従来のBiz/Browserにおいても参照式を利用することにより擬似的に上位フォームの位置・サイズにおいてフォーム配下のオブジェクトのサイズを自動調整することは可能でした。

 

Form frmMain {
    X = 0;
    Y = 0;
    Width = 600;
    Height = 400;
 
    Button btnExit {
        X &= 50 * (^.Width / 600);
        Y &= 50 * (^.Height / 400);
        Width &= 100 * (^.Width / 600);
        Height &= 60 * (^.Height / 400);
    }
    TextBox txtInput {
        X &= 200 * (^.Width / 600);
        Y &= 50 * (^.Height / 400);
        Width &= 200 * (^.Width / 600);
        Height &= 50 * (^.Height / 400);
    }
}

 

しかしながら、実行スピード、開発生産性において決して優れている手法ではありませんでした。

またフォントは作成時以外指定できないため、フォントサイズを動的に変更させることはできませんでした。

 

新規に追加されたプロパティを利用すると、すっきりとしたコーディングで同様の効果を高速に行うことが可能です。

指定したForm配下に存在するオブジェクトに関して、自動的に座標計算を行い画面上へ再配置を行います。

 

上記と同じ効果を持つCRSコードは以下のようになります。

 

Form frmMain {
    X = 0;
    Y = 0;
    Width = 600;
    Height = 400;
    HorizontalScale &= Width / 600;
    VerticalScale &= Height / 400;
    FontScale &= Width / 600;
 
    Button btnExit {
        X = 50;
        Y = 50;
        Width = 100;
        Height = 60;
    }
    TextBox txtInput {
        X = 200;
        Y = 50;
        Width = 200;
        Height = 50;
    }
}

 

配下のオブジェクトのプロパティは変化しないため、論理値により画面設計を行い、適宜ディスプレイサイズにマッチングさせるような実装が可能になりました。

またフォントサイズも動的にスケーリングさせることが可能になり、あたかも拡大縮小するように振る舞わせることが可能です。

フォントサイズはオブジェクトのサイズと独立して拡大縮小率を設定できるため、画面の拡大比率よりやや小さめ・・・など細かな調整が可能です。

 

スケーリング動作の注意点

 

スケーリング動作はオブジェクトのサイズを動的に変更する機構であり、画像を拡大縮小する訳ではありません。

よってOSの指定値で表示される、ボーダー(枠線)やスクロールバーの幅に関しては拡大縮小に影響されません。

そのため、オブジェクト内の有効な領域は拡大時は広く、縮小時は狭くなります。

 

 

 

有効領域のスケーリングの正確さを優先しオブジェクトのサイズを実際の倍率とは異なる値に自動的に補正するクラスもあります。

詳しくは各クラスの説明をご参照ください。

また座標系は整数値のため、小数を含んだ倍率を指定した場合、1ピクセル単位で切り捨て(切り上げ)誤差が発生することがあります。

 

FontScaleに関しては倍率をポイント単位で丸めます。よって座標のスケーリングよりも変化量は大きくなります。

 

スケーリング動作を用いて画面設計を行う場合、表示エリアに余裕を持った設計を行うようにしてください。

 

端末解像度による自動スケーリング

 

API version 6より、端末解像度に応じて自動的にスケーリングを行う機構が追加されました。

本機能により、同じプラットフォーム間であれば、異なる端末でも概ね同一のスケールで画面が表示されるようになりました。

異なるプラットフォーム間では基準となるdpi値が異なりますのでご注意下さい。

Android版

下記のスケール値が自動で適用されます。

解像度分類

解像度

自動スケーリング倍率

ldpi(低解像度)

120dpi

0.75

mdpi(中解像度)

160dpi

1.0 (基準)

tvdpi(TV等端末用解像度)

213dpi

1.33125

hdpi(高解像度)

240dpi

1.5

xhdpi(超高解像度)

320dpi

2.0

xxhdpi(超々高解像度)

480dpi

3.0

xxxhdpi(超々々高解像度)

600dpi

4.0

 

※Biz/Browser AI Android版 v1.x系ではすべての解像度で1.0倍のスケーリングとなります。
iOS版

下記のスケール値が自動で適用されます。
96dpi時を1.0倍としてスケールが適用されます。解像度は端末の種類により異なります。

解像度分類

自動スケーリング倍率

非Retina Displayモデル

1.0 (基準)

Retina Displayモデル

2.0

Retina HD Displayモデル

3.0

Windowsタブレット版

96dpi時を1.0倍としたスケールが適用されます。

 



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る