Überblick
Viele Apps zeigen auf einem Tablet ein anderes Layout als auf einem Smartphone. Die Geräteklasse aus der Bildschirmgröße zu erraten ist unzuverlässig: Das Ergebnis kann sich mit Ausrichtung, Display-Skalierung oder Fenstergröße ändern.
KlugDeviceType fragt das Betriebssystem selbst. Unter Android verwendet es die kleinste Bildschirmbreite des Geräts in dichteunabhängigen Pixeln (ab 600 dp ist es ein Tablet), dieselbe Regel, die Android für seine eigenen Layouts nutzt. Unter iOS verwendet es das Geräte-Idiom des Systems, das ein iPad von einem iPhone unterscheidet.
Die Antwort ist im Hoch- und Querformat dieselbe, unabhängig davon, wie Ihre App ihre Inhalte skaliert, und ab dem ersten Frame der App verfügbar.
Funktionen
- Eigenständig: eine ANE, keine Kernbibliothek und keine abhängigen ANEs, die Sie ergänzen müssten
- Smartphone oder Tablet, beantwortet vom Betriebssystem
- Stabil bei Ausrichtungswechsel und App-Skalierung
- Die kleinste Bildschirmbreite in dp (Punkte unter iOS), für Ihre eigenen Schwellenwerte
- Beim App-Start verfügbar, vor dem ersten Layout
- Keine Berechtigung nötig
Unterstützte Plattformen
Auf anderen Plattformen gibt isSupported false zurück, und deviceType ist ein leerer String.
Erste Schritte
Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
Codebeispiele
Drei vollständige Abläufe. Die Getter kehren sofort zurück und brauchen keine Berechtigung; jedes Lesen fragt das Betriebssystem erneut. Vollständige Dokumentation →
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();
// 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 );
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-Übersicht
| DeviceType.getInstance() | Gibt die einzige Instanz zurück. |
| isSupported | True unter Android und iOS. |
| isTablet | True auf einem Tablet: Android ab 600 dp, iOS iPad; auf anderen Plattformen false. |
| isPhone | True auf einem Smartphone; auf anderen Plattformen false. |
| deviceType | "tablet" oder "phone"; ein leerer String auf anderen Plattformen. |
| smallestWidthDp | Die kleinere Bildschirmabmessung: dp unter Android, Punkte unter iOS; -1, wo nicht verfügbar. |
KlugDeviceType kaufen
Eine Jahreslizenz für eine AIR-Anwendung, mit allen Updates für 12 Monate. Nach der Zahlung erhalten Sie die Erweiterung, die ActionScript-Bibliothek und die Dokumentation per E-Mail, in der Regel innerhalb eines Werktags. Lizenz und Bedingungen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Kein Support
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 7 Tagen
- Lizenz für eine AIR-Anwendung
- Alle Updates für 12 Monate
- Antwort per E-Mail innerhalb von 48 Stunden
Voraussetzungen
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 oder neuer |
| Android | Android 6.0 (API 23) oder neuer |
| Berechtigungen | Keine |