개요
많은 앱이 태블릿과 휴대폰에서 서로 다른 레이아웃을 보여 줍니다. 화면 크기로 기기 종류를 추측하는 것은 신뢰할 수 없습니다. 화면 방향, 디스플레이 배율, 창 크기에 따라 결과가 달라질 수 있기 때문입니다.
KlugDeviceType은 운영 체제 자체에 묻습니다. Android에서는 기기의 최소 화면 너비(밀도 독립 픽셀 기준, 600 dp 이상이면 태블릿)를 사용하며, 이는 Android가 자체 레이아웃에 쓰는 규칙과 같습니다. iOS에서는 iPad와 iPhone을 구분하는 시스템의 기기 idiom을 사용합니다.
앱이 콘텐츠를 어떻게 스케일링하든 상관없이, 앱의 첫 프레임부터 세로와 가로 모드에서 동일한 답을 줍니다.
기능
- 독립형: ANE 하나로 충분하며, 코어 라이브러리나 의존성 ANE를 추가할 필요가 없음
- 휴대폰인지 태블릿인지를 운영 체제가 답변
- 화면 방향과 앱 스케일링에 관계없이 안정적
- 직접 정한 임계값을 위한 dp 단위(iOS에서는 포인트)의 최소 화면 너비
- 앱 시작 시, 첫 레이아웃 이전에 사용 가능
- 권한 불필요
지원 플랫폼
Android arm64 · armv7
iOS arm64
다른 플랫폼에서는 isSupported가 false를 반환하고 deviceType은 빈 문자열입니다.
시작하기
애플리케이션 디스크립터에 확장을 추가합니다:
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
코드 예제
세 가지 완전한 흐름입니다. getter는 즉시 반환되고 권한이 필요 없으며, 매번 읽을 때마다 운영 체제에 다시 묻습니다. 전체 문서 →
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) 이상 |
| 권한 | 없음 |