Översikt
Många appar visar en annan layout på en surfplatta än på en telefon. Att gissa enhetsklassen utifrån skärmstorleken är opålitligt: resultatet kan ändras med orientering, skärmskalning eller fönstrets storlek.
KlugDeviceType frågar själva operativsystemet. På Android används enhetens minsta skärmbredd i densitetsoberoende pixlar (600 dp eller mer är en surfplatta), samma regel som Android använder för sina egna layouter. På iOS används systemets enhetsidiom, som skiljer en iPad från en iPhone.
Svaret är detsamma i stående och liggande läge, oberoende av hur din app skalar sitt innehåll, från appens första bildruta.
Funktioner
- Fristående: ett ANE, inget kärnbibliotek eller beroende-ANE:er att lägga till
- Mobil eller surfplatta, besvarat av operativsystemet
- Stabilt över orientering och appskalning
- Den minsta skärmbredden i dp (points på iOS), för dina egna tröskelvärden
- Tillgängligt vid appstart, före den första layouten
- Ingen behörighet behövs
Plattformar som stöds
På andra plattformar returnerar isSupported false och deviceType är en tom sträng.
Kom igång
Lägg till tillägget i din applikationsbeskrivning (application descriptor):
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
Kodexempel
Tre kompletta flöden. Getters returnerar direkt och kräver ingen behörighet; varje läsning frågar operativsystemet på nytt. Fullständig 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-översikt
| DeviceType.getInstance() | Returnerar den enda instansen. |
| isSupported | True på Android och iOS. |
| isTablet | True på en surfplatta: Android 600 dp eller mer, iOS iPad; false på andra plattformar. |
| isPhone | True på en telefon; false på andra plattformar. |
| deviceType | "tablet" eller "phone"; en tom sträng på andra plattformar. |
| smallestWidthDp | Den mindre skärmdimensionen: dp på Android, points på iOS; -1 där den inte finns. |
Köp KlugDeviceType
En årslicens för en AIR-applikation, med alla uppdateringar i 12 månader. Efter betalning får du tillägget, ActionScript-biblioteket och dokumentationen via e-post, vanligtvis inom en arbetsdag. Licens och villkor
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Ingen support
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 7 dagar
- Licens för en AIR-applikation
- Alla uppdateringar i 12 månader
- Svar via e-post inom 48 timmar
Krav
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 eller senare |
| Android | Android 6.0 (API 23) eller senare |
| Behörigheter | Inga |