概要
多くのアプリは、タブレットとスマートフォンで異なるレイアウトを表示します。画面サイズからデバイスのクラスを推測するのは不確実です。結果は、向き、表示スケーリング、ウィンドウのサイズによって変わることがあります。
KlugDeviceType はオペレーティングシステム自体に問い合わせます。Android では、デバイスの最小画面幅(密度非依存ピクセル。600 dp 以上がタブレット)を使用します。これは Android 自身がレイアウトに使うルールと同じです。iOS では、iPad と iPhone を区別するシステムのデバイスイディオムを使用します。
回答は、縦向きでも横向きでも、アプリがコンテンツをどうスケーリングしても変わらず、アプリの最初のフレームから得られます。
機能
- 自己完結型:ANE 1つで完結し、コアライブラリや依存 ANE の追加は不要
- スマートフォンかタブレットかを、オペレーティングシステムが回答
- 向きやアプリのスケーリングに左右されず安定
- 独自のしきい値のために、最小画面幅を dp(iOS ではポイント)で取得
- 最初のレイアウトより前の、アプリ起動時から利用可能
- 権限は不要
対応プラットフォーム
Android arm64 · armv7
iOS arm64
他のプラットフォームでは、isSupported が false を返し、deviceType は空文字列になります。
はじめに
アプリケーション記述子に拡張機能を追加します:
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
コード例
3つの完全なフローです。ゲッターは即座に返り、権限は不要です。読み取りのたびにオペレーティングシステムに再度問い合わせます。完全なドキュメント →
1 · 起動時にレイアウトを選ぶ
import com.klug.devicetype.DeviceType; var type:DeviceType = DeviceType.getInstance(); // the same answer in portrait and landscape, available before the first layout if ( !type.isSupported ) useDesktopLayout(); // other platforms: deviceType is "" else if ( type.isTablet ) useTabletLayout(); // Android: 600 dp or more · iOS: iPad else usePhoneLayout();
2 · 独自のブレークポイント
// dp on Android, points on iOS; -1 where not available var sw:int = type.smallestWidthDp; var columns:int; if ( sw >= 720 ) columns = 3; // large tablet else if ( sw >= 600 ) columns = 2; // small tablet else columns = 1; // phone, or -1: not available buildGrid( columns );
3 · 折りたたみデバイスの開閉に追従する
import flash.events.Event; var current:String = type.deviceType; // every read asks the system again, nothing is cached stage.addEventListener( Event.RESIZE, function( e:Event ):void { var now:String = type.deviceType; if ( now == current ) return; // a rotation alone never changes it current = now; rebuildLayout( now ); // Android: opening a foldable can turn "phone" into "tablet" }); // iOS: isTablet follows the device (iPad) and does not change; // smallestWidthDp follows the screen the app is shown on
API 概要
| DeviceType.getInstance() | 唯一のインスタンスを返します。 |
| isSupported | Android と iOS では true です。 |
| isTablet | タブレットでは true:Android は 600 dp 以上、iOS は iPad。他のプラットフォームでは false。 |
| isPhone | スマートフォンでは true。他のプラットフォームでは false。 |
| deviceType | "tablet" または "phone"。他のプラットフォームでは空文字列。 |
| smallestWidthDp | 画面の短い方の寸法:Android では dp、iOS ではポイント。利用できない場合は -1。 |
KlugDeviceType を購入
AIR アプリケーション1つ分の年間ライセンスで、12か月間のすべてのアップデートが含まれます。お支払い後、拡張機能、ActionScript ライブラリ、ドキュメントをメールでお送りします(通常は1営業日以内)。ライセンスと条件
税金は Link(Stripe)によりチェックアウト時に計算されます。チェックアウト時に、AIR アプリのアプリケーションIDを入力してください。
動作要件
| AIR SDK | 51.x(HARMAN) |
| iOS | iOS 17 以降 |
| Android | Android 6.0(API 23)以降 |
| 権限 | なし |