Vue d’ensemble
De nombreuses applications affichent une mise en page différente sur tablette et sur téléphone. Deviner la catégorie d’appareil à partir de la taille de l’écran n’est pas fiable : le résultat peut varier selon l’orientation, la mise à l’échelle de l’affichage ou la taille de la fenêtre.
KlugDeviceType interroge le système d’exploitation lui-même. Sur Android, il utilise la plus petite largeur d’écran de l’appareil en pixels indépendants de la densité (600 dp ou plus correspond à une tablette), la même règle qu’Android applique à ses propres mises en page. Sur iOS, il utilise l’idiome d’appareil du système, qui distingue un iPad d’un iPhone.
La réponse est la même en portrait et en paysage, indépendante de la façon dont votre application met son contenu à l’échelle, dès la première image de l’application.
Fonctionnalités
- Autonome : une seule ANE, sans bibliothèque centrale ni ANE de dépendance à ajouter
- Téléphone ou tablette, selon le système d’exploitation
- Stable malgré l’orientation et la mise à l’échelle de l’application
- La plus petite largeur d’écran en dp (points sur iOS), pour vos propres seuils
- Disponible au démarrage de l’application, avant la première mise en page
- Aucune autorisation nécessaire
Plateformes prises en charge
Sur les autres plateformes, isSupported renvoie false et deviceType est une chaîne vide.
Prise en main
Ajoutez l’extension au descripteur de votre application :
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
Exemples de code
Trois flux complets. Les getters retournent immédiatement et ne nécessitent aucune autorisation ; chaque lecture interroge à nouveau le système d’exploitation. Documentation complète →
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
Aperçu de l’API
| DeviceType.getInstance() | Renvoie l’instance unique. |
| isSupported | Vrai sur Android et iOS. |
| isTablet | Vrai sur une tablette : Android à partir de 600 dp, iPad sur iOS ; faux sur les autres plateformes. |
| isPhone | Vrai sur un téléphone ; faux sur les autres plateformes. |
| deviceType | "tablet" ou "phone" ; une chaîne vide sur les autres plateformes. |
| smallestWidthDp | La plus petite dimension de l’écran : dp sur Android, points sur iOS ; -1 si elle n’est pas disponible. |
Acheter KlugDeviceType
Une licence annuelle pour une application AIR, avec toutes les mises à jour pendant 12 mois. Après le paiement, vous recevez l’extension, la bibliothèque ActionScript et la documentation par e-mail, généralement sous un jour ouvré. Licence et conditions
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Sans support
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 7 jours
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 48 heures
Prérequis
| SDK AIR | 51.x (HARMAN) |
| iOS | iOS 17 ou version ultérieure |
| Android | Android 6.0 (API 23) ou version ultérieure |
| Autorisations | Aucune |